我想用这种行为定义一个快捷方式“git diffn”:
git diffn := git diff HEAD HEAD~1
git diffn 1 := git diff HEAD~1 HEAD~2
git diffn 2 := git diff HEAD~2 HEAD~3
...
第一个没问题,但我不知道该怎么做。
我想用这种行为定义一个快捷方式“git diffn”:
git diffn := git diff HEAD HEAD~1
git diffn 1 := git diff HEAD~1 HEAD~2
git diffn 2 := git diff HEAD~2 HEAD~3
...
第一个没问题,但我不知道该怎么做。
关于什么:
git show
- 显示最后一次提交
git show HEAD~1
- 显示最后一个提交
git show <COMMIT SHA>
- 向您显示任何提交
git whatchanged
- 显示哪些文件根据 git 日志更改
我自己想通了。我已将这个怪物添加到 ~/.gitconfig 中:
[alias]
dn = "!sh -c 'if [ $# -eq 0 ] ; then git diff HEAD~1 HEAD ; else git diff HEAD~`expr $1 + 1` HEAD~$1 ; fi' -"
在这之后,
git dn
作品,以及
git dn 1
git dn 2
...
令人惊讶的是(对我来说),你可以结合语法~n
,^
所以我就是这样做的:
a=1; git diff HEAD^~$a HEAD~$a
但是有一个更简单的方法:
a=1; git log -p -1 HEAD~$a;
我发现额外的提交信息有助于定位,但您可以自定义它。注意:手册页指出了 this 和 diff 格式之间的一些细微差别,这可能对非人类消费很重要。
[alias]
diffn = "!sh -c 'git log -p -1 HEAD~$1' -"
不适用于省略的 arg,所以我想if
需要一个。
顺便说一句:在这里找到了类似的讨论