对于 "git diff" 是否有 -U<infinity> 选项来显示整个文件?
For "git diff" is there a -U<infinity> option to show the whole file?
我需要以编程方式为网络生成全上下文 git 差异 ui。
用于生成全上下文差异的 CLI 包含在以下问题中:
- How to get git diff with full context?
- Git show whole file changes
普遍的答案类似于 git diff -U99999
使用具有高得离谱的阈值(例如 999,999)的 -U / --unified
选项,执行 git diff -U999999
:
- 让我怀疑可能会影响性能
- 更糟糕的是,如果我的文件大于 1M 行,这就是正确性问题
是否有 -U 选项来显示整个文件?
坦率地说,最好的选择是使用 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
显然,这是供交互使用的 - 不适用于脚本
如果您只是将大数字与 -U
一起使用,您可以选择大数字作为 您的应用程序 无法处理显示这样的点大文件(差异)。
it's a correctness issue if my file is larger than 1M lines
为了解决这个问题,您可以检查多行 @@ ... @@
行的输出以确定它是否完整——这可以避免您默默地给出错误的数字。
我需要以编程方式为网络生成全上下文 git 差异 ui。
用于生成全上下文差异的 CLI 包含在以下问题中:
- How to get git diff with full context?
- Git show whole file changes
普遍的答案类似于 git diff -U99999
使用具有高得离谱的阈值(例如 999,999)的 -U / --unified
选项,执行 git diff -U999999
:
- 让我怀疑可能会影响性能
- 更糟糕的是,如果我的文件大于 1M 行,这就是正确性问题
是否有 -U 选项来显示整个文件?
坦率地说,最好的选择是使用 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
显然,这是供交互使用的 - 不适用于脚本
如果您只是将大数字与 -U
一起使用,您可以选择大数字作为 您的应用程序 无法处理显示这样的点大文件(差异)。
it's a correctness issue if my file is larger than 1M lines
为了解决这个问题,您可以检查多行 @@ ... @@
行的输出以确定它是否完整——这可以避免您默默地给出错误的数字。