git diff两个顺序提交快捷方式?

时间:2013-06-24 08:56:10

标签: git

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

首先没问题,但我不知道要做其余的事。

3 个答案:

答案 0 :(得分:3)

怎么样:

git show - 显示上次提交

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

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

git whatchanged - 显示哪些文件针对git log更改了

答案 1 :(得分:3)

自己想出来。我添加了〜/ .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 
...

答案 2 :(得分:0)

令人惊讶的是(对我而言),您可以合并~n^语法,这就是我的做法:

a=1; git diff HEAD^~$a HEAD~$a

但是有一种更简单的方法:

a=1; git log -p -1 HEAD~$a;

我发现额外的提交信息有助于定位,但您可以自定义。注意:该联机帮助页指出了这种与diff的格式之间的一些细微差别,这可能对非人类消费很重要。

[alias]
diffn = "!sh -c 'git log -p -1 HEAD~$1' -"

对于省略的arg不起作用,所以我想这需要if

BTW:发现了类似的讨论here