2016-06-28 139 views
0

所以说我做到哪里,我在同一个区域编辑多行git的差异,我也得到:有没有办法让git diff显示的行发生变化?

- Change 1 
+ Change1 
- Change 2 
+ Change2 

我可以更改的diff文件显示是这样的顺序:

- Change 1 
- Change 2 
+ Change1 
+ Change2 

这样我可以更容易地显示我做了什么改变,如果有人决定与github上的前一个不同我的提交。

回答

1

订单git diff输出由源代码行的顺序决定,因为它依次工作。因此,在SO帖子的主题行中回答问题(“有没有一种方法可以[重新]排序”)只是“不”。

但是,这似乎不是你的问题打算,根据你的例子。 (好东西,你提供了一个例子!)

让我们来看看一些实际git diff输出,以及如何these two command line argument control knobs影响它:

-Un--unified=n

           生成的diff与ñ线的情况,而不是通常的三。意味着-p

--inter-hunk-context=lines

           显示DIFF大块之间的范围内,高达指定的行数,由此熔合是彼此接近大块。

我做了一个只有README文件的存储库,然后对它做了两处更改。第一个变化是在第1行,第二个是上线9下面是标准git diff输出:

$ git diff 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,4 +1,4 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
for showing some 
cases of using 
@@ -6,4 +6,4 @@ git diff with 
flags to adjust 
the amount of 
context that will 
-be shown. 
+be shown. MOD2 

让我们用-U从三线以减少上下文的数量只是一个:

$ git diff -U1 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,2 +1,2 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
@@ -8,2 +8,2 @@ the amount of 
context that will 
-be shown. 
+be shown. MOD2 

差异是较短,但仍有一些上下文。 (顺便提一句,请注意MOD1没有“above”上下文,而MOD2没有“below”上下文,因为文件没有高于或低于这一点的行数。通常,如果文件中有更多文本,则两个git diff输出会稍微长一些。如果可用的话,我们将在第一行上面有三行上下文,在第一行上面有三行下面的第三行,我们会在第1行上面有1行,在第9行上面有1行。)

增加线-的上下文具有熔合的diff的副作用:

$ git diff -U4 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,9 +1,9 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
for showing some 
cases of using 
git diff with 
flags to adjust 
the amount of 
context that will 
-be shown. 
+be shown. MOD2 

这是因为,与4行第1行的变化以下上下文中,DIFF大块显示线1通过5包容;在第9行的变化之上具有4行上下文; diff hunk显示第5至9行。第5行和第5行是相同的,所以这两个胖子融合在一起。

或者,使用-U1或有点疯狂-U0(没有上下文的话),即使我可以用--inter-hunk-context添加额外方面之间的第一和第二DIFF大块,达到他们加入点。用-U1,我需要--inter-hunk-context=5才能起作用。

$ git diff -U1 --inter-hunk-context=5 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,9 +1,9 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
for showing some 
cases of using 
git diff with 
flags to adjust 
the amount of 
context that will 
-be shown. 
+be shown. MOD2 

这个时候,第一个大块显示行1至2,并且所述第二显示线8通过9.我们添加5条更多的线路,它们是线3,4,5,6,和7-和现在这两个胖子相邻并融合成一个差异群体。

使用-U0,我们需要--inter-hunk-context=7,因为基差异仅适用于第1行和第9行,并且我们必须添加第2行到第8行(7行)以使它们连接。

还有一个更相关的选项,你可以使用:

-W--function-context

           显示整个周边变化的功能。

对于这个特殊的README文件,其中包含纯文本英语,这个选项是没有用的,因为没有“功能”中有这样一个文件。 -W的工作取决于文件的语言,以及Git是否可以识别用该语言编写的函数。

相关问题