我需要通过编程方式为web ui生成一个完整的上下文git。
用于生成完整上下文差异的CLI包含了以下问题:
流行的答案是类似于git diff -U99999
使用高得离谱的阈值(例如999 999)的-U / --unified选项,执行git diff -U999999
是否有显示整个文件的-U选项?
发布于 2015-03-04 04:15:54
如果您只在-U中使用一个大的数字,您可以选择大号作为应用程序无法处理显示如此大的文件(diff)的点。
如果我的文件大于1M行,这是一个正确性问题
为了解决这个问题,您可以检查多个@@ ... @@行的输出,以确定它是否完整--这样您就可以避免默默地给出错误的数字。
发布于 2015-02-27 23:14:23
坦率地说,最好的选择是使用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显然,这是用于交互的,而不是脚本。
https://stackoverflow.com/questions/28727424
复制相似问题