如何区分提交?

nop*_*ole 6 git git-diff

假设我执行git log并看到一个带有 ID 的提交280c5af57b02c41edbf947a0eed31c72e2839123

看来要查看该提交中进行了哪些更改,我可以这样做

git diff 280c5af57^ 280c5af57
Run Code Online (Sandbox Code Playgroud)

或者

git show 280c5af57
Run Code Online (Sandbox Code Playgroud)

但是,由于我已经设置为 diff 工具(使用https://gist.github.com/bkeating/329690opendiff上的说明),所以上面的第一个命令将使用 来显示它,而第二个命令将使用命令行。opendiff

有没有办法不使用 Bash 别名或函数来区分git它,而无需两次输入或粘贴提交 ID?(喜欢svn diff -c 321234

jth*_*ill 6

git diff默认与工作树和/或索引进行比较。用于比较直接从存储库中出来的树的命令是git diff-tree。尝试:

git diff-tree --ext-diff -p 280c5af
Run Code Online (Sandbox Code Playgroud)


bde*_*ham 1

您可以将这样的内容添加到您的gitconfig

\n\n
[alias]\n    changes = !sh -c \'git diff "$0^" "$0"\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在你可以运行

\n\n
git changes 280c5af57b02c41edbf947a0eed31c72e2839123\n
Run Code Online (Sandbox Code Playgroud)\n\n

并且您只需指定 SHA(或其他内容)一次。

\n\n

(这个答案确实感觉有点沉重。有没有人有一个不会\xe2\x80\x99t跳过箍的解决方案!sh -c?)

\n