【问题标题】:Avoid writing out latest commit hash when doing `git diff` after a merge合并后执行“git diff”时避免写出最新的提交哈希
【发布时间】:2019-01-29 02:39:02
【问题描述】:

在我将 master 的最新提交合并到我的工作分支的情况下,我知道我可以通过简单地运行 git diff <hash> <file>(或它的第一个独特的十六进制字符)来检查任何暂存提交的文件的 git diff )。 但是......有人可以告诉我是否有一个选项,默认情况下,获得相同的行为,而不必去寻找这些哈希字符? (SVN 默认查找最新版本)。

我的直觉是,由于 Git 知道最新的提交哈希,所以 Git 可以默认使用最新的提交哈希,还是要求它太多了? 去捞这个哈希是一件痛苦的事……而不是我的工作!应该是电脑的。

【问题讨论】:

    标签: git merge diff


    【解决方案1】:

    在 Git 中,修订名称 HEAD 始终指代当前分支上的最新提交(如果您使用 git checkout a38ff0 而不是 git checkout my-branch,则直接指向提交)。所以你可以把你的文件名放到这个命令模板中:

    git diff HEAD <file>
    

    另外,如果你需要在head之前引用commit,你可以写HEAD~。对于 head 之前的两次提交,你可以写 HEAD~2 等等。此外,HEAD~~HEAD^^ 等效于 HEAD~2。 (虽然HEAD^2 的含义不同。)

    也许您想知道为什么不能只写以下内容:

    git diff <file>
    

    这仅在您没有暂存 (git added) 任何更改的情况下是等效的。它将文件与最新提交和分阶段更改进行比较,而不是像您指定 HEAD 时那样仅对最新提交进行区分。

    【讨论】:

    • 感谢@Rory 的扩充答案(波浪号的作用)。
    • 回复:您添加的评论:确实,我已经弄清楚了未暂存的更改,但我无法弄清楚为什么 diff 输出在暂存后消失了。
    • 旁注:HEAD~~HEAD~2 是等价的,但 HEAD^^HEAD^2 不等价,HEAD~2 几乎不等价于HEAD^2
    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 2011-10-06
    • 2019-08-22
    • 2013-04-28
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2016-12-11
    相关资源
    最近更新 更多