所以说我做了一个git diff我在同一区域编辑多行,我得到:
- Change 1
+ Change1
- Change 2
+ Change2
我可以更改差异显示的顺序是这样的:
- Change 1
- Change 2
+ Change1
+ Change2
通过这种方式,如果有人决定在github上将前一个提交与我的提交进行差异,我可以更轻松地显示我所做的更改。
答案 0 :(得分:1)
git diff
输出的顺序由源代码行的顺序决定,因为它按顺序工作。因此,这个SO帖子的主题行中的问题的答案(“有没有办法[重新]命令行”)只是“不”。
但根据您的示例,这似乎不是您的意图的问题。 (你提供了一个例子!)
我们来看一些实际的git diff
输出,以及these two command line argument control knobs对它的影响:
-Un
,--unified=n
使用 n 上下文行生成差异,而不是通常的三行。意为
-p
。
--inter-hunk-context=lines
显示差异之间的上下文,直到指定的行数,从而融合相互靠近的帅哥。
我创建了一个只有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
没有“上方”上下文,MOD2
没有“下方”上下文,因为该文件在此点之上或之下没有任何行。通常两个git diff
输出都会如果文件中有更多的文本,那就更长了。如果那些文件可用的话,我们在第1行上面会有三行上下文,在第9行下面会有3行,第一行中会有3行。我们在第1行上面会有1行,在第9行下面的1行,在第二行。)
增加上下文行具有融合差异的副作用:
$ 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
这是因为,在第1行的变化下面有4行上下文,diff hunk显示第1行到第5行(包括1和5);在第9行的变化之上有4行背景; diff hunk显示第5行到第9行。第5行和第5行是相同的,所以两个帅哥融合在一起。
或者,即使使用-U1
或有点疯狂-U0
(根本没有上下文),我也可以使用--inter-hunk-context
添加其他上下文 第一个和第二个差异大块之间,直到它们加入的点。使用-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
这次,第一个hunk显示第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是否可以识别用该语言编写的函数。