如何获得完整的上下文的git diff?

如何创build适合在坩埚中复习的补丁?

git diff branch master --no-prefix > patch 

这只产生三行上下文。 所以我做了以下

 git diff --unified=2000 branch master --no-prefix > patch 

希望所有的文件将有不到2000行。 有没有办法告诉git在补丁中包含文件中的所有行,而不必指定最大行数?

我知道这是旧的,但我也不喜欢硬编码的解决scheme,所以我testing了这一点:

 git diff -U$(wc -l MYFILE) 

使用-U似乎是解决这个问题的唯一方式,但是使用一个行数可以保证它能够在一个非常大的文件中进行一些小改动。

这似乎很好地工作:

 git diff --no-prefix -U1000 

警告:

-U标志指定上下文的行。 如果您的更改之间有超过1000行,则可能需要增加此项。

注意: git1.8.1rc1宣布(2012年12月8日)包括:

可以使用新的configurationvariables“ diff.context ”在补丁输出中提供默认数量的上下文行,以覆盖3行的硬编码缺省值。

这样可以帮助在这里产生一个更完整的上下文。

这在Mac OS上适用于我:

 git diff -U$(wc -l main.htm | xargs) 

请参阅“如何修剪Bashvariables的空格?”