4

我想用这种行为定义一个快捷方式“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
...

第一个没问题,但我不知道该怎么做。

4

3 回答 3

7

关于什么:

git show- 显示最后一次提交

git show HEAD~1- 显示最后一个提交

git show <COMMIT SHA>- 向您显示任何提交

git whatchanged- 显示哪些文件根据 git 日志更改

于 2013-06-24T09:02:32.690 回答
5

我自己想通了。我已将这个怪物添加到 ~/.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 
...
于 2013-06-24T09:11:39.920 回答
0

令人惊讶的是(对我来说),你可以结合语法~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需要一个。

顺便说一句:在这里找到了类似的讨论

于 2013-06-24T09:23:14.987 回答