【问题标题】:Find out commit id of branch before I pulled在我拉之前找出分支的提交ID
【发布时间】:2017-03-02 16:05:54
【问题描述】:

我在 master 分支的 git 存储库中工作。最近我从远程拉了更新分支。 有什么方法可以查明,在我拉之前哪个 commit-ID 是 master 的 HEAD?

【问题讨论】:

  • 运行git reflog master,你会发现一些线索。
  • 太棒了,谢谢@ElpieKay。将其发布为答案,以便我接受。

标签: git branch


【解决方案1】:

git reflog 解决了我的问题,正如@ElpieKay 在a comment 中所建议的那样

【讨论】:

    【解决方案2】:

    在拉取后没有更改分支的简单情况下,您可以使用 master@{1}main@{1} 引用,例如git log -1 master@{1}.

    【讨论】:

      【解决方案3】:

      如果你在拉取后没有合并任何东西,你可以使用

      git log -1 --merges
      

      这将打印带有格式的最新合并提交

      commit <merge-commit-hash>
      Merge: <first-parent-hash> <second-parent-hash> ...
      Author: ...
      Date: ...
      

      第二行(以“Merge”开头的那一行)列出了该合并提交的父级。第一个 (&lt;first-parent-hash&gt;) 是合并前 HEAD 指向的提交的哈希值。

      换句话说,当您输入git pull 时,您已签出&lt;first-parent-hash&gt;

      编辑 限制:正如jacob-krall 指出的那样,如果merge(作为pull 的一部分执行)解决为快进,这不会显示HEAD 在哪里,因为这样的合并不会创建提交对象。

      【讨论】:

      • 没有。默认情况下,git 在进行快进合并时不会创建新的提交对象。它只是将主指针快速转发到合并分支指向的提交。由于 git log 用于显示提交,因此快进合并不会反映在输出中。
      • 那么我认为它没有回答这个问题,即“我拉之前HEAD 是什么?”,而不是“我合并之前HEAD 是什么?”
      • git pull 只是git fetch 后跟git merge FETCH_HEAD 的简写(参见git-pull doc。但你是对的.. git log 不会告诉你快进合并。跨度>
      猜你喜欢
      • 2020-05-07
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2023-02-20
      • 2012-12-18
      相关资源
      最近更新 更多