除了编写别名或脚本以外,是否有更短的命令来获取特定提交的差别? git
git diff 15dc8^..15dc8
若是你只提供单个提交id git diff 15dc8
,它会针对HEAD git diff 15dc8
该提交。 spa
使用别名,因此不能彻底回答你的问题,但我以为这些对你作的事情有用... 日志
alias gitdiff-1="git log --reverse|grep commit|cut -d ' ' -f2|tail -n 2|head -n 2|xargs echo|sed -e 's/\s/../'|xargs -n 1 git diff" alias gitdiff-2="git log --reverse|grep commit|cut -d ' ' -f2|tail -n 3|head -n 2|xargs echo|sed -e 's/\s/../'|xargs -n 1 git diff" alias gitdiff-3="git log --reverse|grep commit|cut -d ' ' -f2|tail -n 4|head -n 2|xargs echo|sed -e 's/\s/../'|xargs -n 1 git diff" alias gitlog-1="git log --reverse|grep commit|cut -d ' ' -f2|tail -n 2|head -n 2|xargs echo|sed -e 's/\s/../'|xargs -n 1 git log --summary" alias gitlog-2="git log --reverse|grep commit|cut -d ' ' -f2|tail -n 3|head -n 2|xargs echo|sed -e 's/\s/../'|xargs -n 1 git log --summary" alias gitlog-3="git log --reverse|grep commit|cut -d ' ' -f2|tail -n 4|head -n 2|xargs echo|sed -e 's/\s/../'|xargs -n 1 git log --summary"
git diff 15dc8 15dce~1
~1表示'父母',~2'祖父母等等。 code
上面保罗的解决方案作了我但愿的那样。 it
$ git diff HEAD^1
另外,添加像hobs这样的别名是颇有用的,若是你将如下内容放在〜/ .gitconfig文件的[alias]部分中,那么你能够使用short-hand来查看head和previous之间的diff。 io
[alias] diff-last = diff HEAD^1
而后运行$ git diff-last将得到结果。 请注意,这还将包括您还没有提交的任何更改以及提交之间的差别。 若是要忽略还没有提交的更改,则能够使用diff直接将HEAD与其父级进行比较: zsh
$ git diff HEAD^1 HEAD
若是您使用zsh并设置了extendedglob
选项,那么许多提到的示例(例如git diff 15dc8^!
或git diff 15dc8^..15dc8
)都不起做用。 您能够经过如下三种方法之一修复它: ast
unsetopt extendedglob
(和/或从unsetopt extendedglob
删除) sed
setopt NO_NOMATCH
(和/或在setopt NO_NOMATCH
设置) grep
每次用反斜杠逃脱插入符号和爆炸,例如git diff 15dc8\\^\\!
使用git show $COMMIT
。 它将向您显示提交的日志消息以及该特定提交的差别。