有没有更短的写法来表示 git diff HEAD^ HEAD?

10

我发现我经常需要进行这样的操作,比如当我做了一些更改并提交后,需要查找我在那里做的事情以确定接下来要做什么,或者确保在将其推送到远程之前没有添加任何意外的内容。

诚然,diff HEAD^ HEAD输入起来足够快(git diTABHTAB^ HTAB),但它仍然感觉应该有更好的方法。

最简单的方法是什么来查看最近一次提交所做的所有更改?

5个回答

14

尝试使用git show。如果没有其他选项,它将显示最新提交的差异。

git show $something以用户友好的方式显示$something的内容。当$something指向一个文件时,git show将显示该文件的内容。当它指向一个提交时,Git会显示该提交(作者、日期、提交日志和差异)。没有更多参数的git show等同于git show HEAD


太棒了!您能解释一下为什么 show 会这样吗?我通常使用它来显示某个版本的整个文件;从未想过当没有参数时它会显示差异。 - leftaroundabout
@leftaroundabout git show <commit_id>会显示给定提交的日志信息和文本差异。 如果没有提交ID,则使用HEAD。 - Frodon

9

我在这篇帖子中发现,@HEAD的快捷方式。因此

git diff @^ @

或者
git show @

还有另一种选择。


2
是的,@ 确实是 HEAD 的别名。 - CodeWizard

5
你可以使用以下之一:
(选择适合您的,并将其设为别名)。
# 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

git log --cc

显示一个或多个对象(blob、tree、tag 和 commit)。对于 commits,它显示日志消息和文本差异。它还以 git diff-tree --cc 生成的特殊格式呈现合并提交。

从 git v>2.6 开始,你可以使用 --cc 标志添加到日志中。

git log --cc

它将显示带有差异的完整日志。

enter image description here


git diff-tree --cc HEAD

非常类似于git log --cc。在幕后,git show是此命令的别名。

enter image description here


我可能主要使用简单的 git show,但知道 log --cc 也很好。当我需要了解最近的三个提交时,这可能会派上用场。 - leftaroundabout

0
一种非常好的方法是使用别名。当然,这只是一个快速解决方案,但它确实可以帮助解决问题。
$> alias gd="diff HEAD^ HEAD" 

这个应该可以解决问题。现在你可以使用:

$> gd

然后你的命令就会运行。

alias命令添加到你的~/.bashrc文件中,或者类似地,你就不必在每个控制台会话的开头写它了。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接