Answers:
我知道这已经很老了,但是我也不喜欢硬编码的解决方案,因此我对此进行了测试:
git diff -U$(wc -l MYFILE)
使用-U似乎是解决此问题的唯一方法,但是使用行数保证即使在非常大的文件中进行很小的更改也可以使用它。
<
没有必要。git diff -U$(wc -l MYFILE) MYFILE
git diff -U$(wc -l MYFILE | awk '{print $1}') MYFILE
是一个更好的答案,可以wc
通过仅获取没有空格的行数,不依赖子外壳程序的未引用输出来创建两个参数来正确解析输出,并且可以在macOS / BSD上运行。
-U
你的建议选择是一样的--unified=
由提问者使用的选项。唯一的区别是您指定的上下文行数少于使用的问询者2000的行数。@ balki想知道如何将数字增加到无穷大,但建议将数字减半。为什么?
git show
!
--no-prefix
选项摆脱了默认显示的“ / a /”和“ / b /”目标前缀。(链接的页面)
注意:git1.8.1rc1公告(2012年12月8日)包括:
diff.context
可以使用新的配置变量“ ”在补丁输出中提供默认数量的上下文行,以覆盖3行的硬编码默认行。
这样可以帮助在此处生成更完整的上下文。
得到了灵感,所以我添加了一个git别名。
$ cat ~/.gitconfig | fgrep diff
df = "!git diff -U$(wc -l \"$1\" | cut -d ' ' -f 1) \"$1\""
$ git df <file>
更新:
刚发现“ git df”有时不起作用,原因是执行git别名时目录更改。(请参阅git别名在错误的目录中操作)。这是更新的版本:
$ cat ~/.gitconfig | fgrep df
df = "! [ \"$GIT_PREFIX\" != \"\" ] && cd \"$GIT_PREFIX\"; ~/bin/git_df.sh"
$
$ cat ~/bin/git_df.sh
#!/bin/bash
for FILE in $@; do
git diff -U$(wc -l "${FILE}" | cut -d ' ' -f 1) "${FILE}"
done
exit 0
先前接受的解决方案在查看特定文件/提交时对我不起作用(该-U
选项似乎与rev / path解析混淆),但--inter-hunk-context=
在这种情况下适用于git version 2.24.0
:
git diff \
--no-prefix \
--inter-hunk-context=2000 \
master -- \
path/to/file.py
如果您不知道文件的大小,当然可以使用wc -l
而不是对其进行硬编码:
git diff \
--no-prefix \
--inter-hunk-context=$(wc -l path/to/file.py) \
master -- \
path/to/file.py