我需要以编程方式为web ui生成完整上下文git diff。
用于生成完整上下文差异的CLI包含在问题中:
流行的答案类似于git diff -U99999
-U / --unified
选项的阈值非常高(例如999,999),执行git diff -U999999
:
是否有-U选项显示整个文件?
答案 0 :(得分:4)
如果您只使用-U
的大号,您可以选择较大的数字作为您的应用程序无法处理显示如此大的文件(diff)的点
如果我的文件大于1M行
,这是正确性问题
要解决此问题,您可以检查多个@@ ... @@
行的输出,以确定它是否完整 - 这样可以避免无声地给出错误的数字。
答案 1 :(得分:1)
坦率地说,最好的选择是使用git difftool
而不是香草git diff
。要查看您的git版本支持哪些工具,请输入
git difftool --tool-help
,我的版本(2.3.0)显示以下内容
$ git difftool --tool-help
'git difftool --tool=<tool>' may be set to one of the following:
araxis
gvimdiff
gvimdiff2
gvimdiff3
meld
vimdiff
vimdiff2
vimdiff3
The following tools are valid, but not currently available:
bc
bc3
codecompare
deltawalker
diffmerge
diffuse
ecmerge
emerge
kdiff3
kompare
opendiff
p4merge
tkdiff
xxdiff
我通常使用meld
,但这只是个人偏好。 git difftool
使用与git diff
相同的参数加上一些来帮助处理(我发现-y
对于防止从一个文件移动到下一个文件时的提示非常有用。)
例如,要查看特定提交所引入的更改,您可以使用
git difftool -y -t meld 08f0f82^..08f0f82
显然用正确的SHA-1替换08f0f82
。
我最大的抱怨是它按顺序为每个修改过的文件启动工具(因此指定-y
选项)。
如果您只想检查该提交中特定文件的更改,您只需将文件名添加到命令行即可。
git difftool -y -t meld 08f0f82^..08f0f82 myfile.c
显然,这是用于交互式使用 - 而不是用于编写脚本