【发布时间】:2016-03-07 12:57:55
【问题描述】:
我发现自己经常输入这个,比如当我做了一些更改,提交它,然后要么需要查找我在那里做的事情以确定下一步要做什么,要么确保我没有添加任何意外的内容在将提交推送到远程之前提交。
诚然,diff HEAD^ HEAD 的输入速度足够快(git diTABHTAB←^ H TAB),但感觉还是应该有更好的办法。
我如何最容易地查看上次提交中所做的所有更改?
【问题讨论】:
我发现自己经常输入这个,比如当我做了一些更改,提交它,然后要么需要查找我在那里做的事情以确定下一步要做什么,要么确保我没有添加任何意外的内容在将提交推送到远程之前提交。
诚然,diff HEAD^ HEAD 的输入速度足够快(git diTABHTAB←^ H TAB),但感觉还是应该有更好的办法。
我如何最容易地查看上次提交中所做的所有更改?
【问题讨论】:
试试git show。如果没有其他选项,它会显示最新提交的差异。
git show $something 以用户友好的方式显示$something 的内容。当$something 引用一个文件时,git show 将显示该文件的内容。当它提到一个提交时,Git 会显示提交(作者、日期、提交日志和差异)。没有更多参数的git show 等效于git show HEAD。
【讨论】:
show会这样做吗?我通常用它来显示某个版本的整个文件;永远不会在没有参数的情况下显示差异。
git show <commit_id> 将显示给定提交的日志消息和文本差异。如果未给出提交 ID,则使用 HEAD。
【讨论】:
您可以使用以下方法之一:
(选择适合您的并为其设置别名)。
# the equivalent command (dry run) for pull/push
git log ^branch1 branch2
git log branch1 ^branch 2
git show# to view the content of the last commit
git show
显示一个或多个对象(blob、树、标签和提交)。
对于提交,它显示日志消息和文本差异。 它还以 git diff-tree --cc 生成的特殊格式呈现合并提交。
git log --cc从 git v>2.6 开始,您已将 --cc 标志添加到日志中,以便您可以使用
git log --cc
它也会显示带有差异的完整日志。
git diff-tree --cc HEAD与git log --cc 非常相似。在幕后git show 是此命令的别名。
【讨论】:
git show,但也很高兴了解log --cc。当我需要了解最后 三个 左右的提交时,它会派上用场。
一个非常好的方法是使用别名。当然,这是一个快速修复,但是
$> alias gd="diff HEAD^ HEAD"
会成功的。 现在您可以使用:
$> gd
你的命令就会运行。
将alias 命令添加到您的~/.bashrc,或者类似地,您不必在每个控制台会话的开头编写它。
【讨论】:
信息:使用git diff 的最短语法如下:
git diff @^!
即git diff HEAD^!
或者使用前面提到的最短的git show。
语法含义见https://git-scm.com/docs/gitrevisions#_other_rev_parent_shorthand_notationsr1^!
【讨论】: