【问题标题】:Git merged branch's last commit/committerGit合并分支的最后一次提交/提交者
【发布时间】:2012-08-31 20:23:17
【问题描述】:

可能已经有人问过了,但我在这里找不到。

我有一个分支FEATURE 合并到一个分支STABLE 中,目前当我从STABLE 执行git show 时,我得到了最后一个提交,即

commit 265d684b67e66ba762bd438c44e49881f7fd571b
Merge: 5285837 78d9687
Author: xxxxx
Date:   Thu Sep 6 18:58:46 2012 -0400

    Merge branch 'FEATURE' into STABLE

无法弄清楚在合并到STABLE 之前,如何找到最后一次对FEATURE 分支提交了什么更改?

这是向最后提交一些更改的提交者发送通知所必需的。

如果需要任何进一步的信息和任何帮助/建议,请告诉我?

【问题讨论】:

  • 我在理解您的实际问题时遇到了一些问题。究竟是什么让您无法查看合并前的最后一次提交?您是在问如何解析适当的信息?
  • @Grizzly 正是我正在寻找的信息解析。不仅只有 FEATURE 分支合并到 STABLE 我还有几种类型的分支合并/更改 STABLE 的内容。我正在尝试从提供的答案中获取一些信息。感谢您的回复。

标签: git git-merge git-commit git-log git-show


【解决方案1】:

不完全是您要查找的内容,但为了打印出所有远程分支及其最后一次提交的作者,我在 Bash 上使用了以下命令:

IFS=$'\n' && for branch in $(git branch --all | grep "remotes/origin" | sed "s/->.*$//" | sort); do echo "$(git log --format=format:"%an" ${branch//[[:space:]]/} | head -n 1) - ${branch//[[:space:]]/}"; done | sort && unset IFS

请务必先发送git fetch --all,以便将所有公共分支镜像到您的本地存储库中。

对于旧版本的 Git(1.9.x 及更早版本),git branch 的输出不同,它没有在箭头(“->”)后打印本地跟踪分支。

IFS=$'\n' && for branch in $(git branch --all | grep "remotes/origin" | sort); do echo "$(git log --format=format:"%an" ${branch//[[:space:]]/} | head -n 1) - ${branch//[[:space:]]/}"; done | sort && unset IFS

【讨论】:

  • 我们如何让上面的命令做到这一点,但只适用于合并的分支?
  • @J86 这似乎不太直接。这是我要尝试的:我会将上述命令扩展为脚本并合并此答案的步骤:stackoverflow.com/a/40011122/28578
【解决方案2】:

您可以使用相对提交表示法来显示提交。在您的示例中,由于您将 FEATURE 合并到 STABLE 中,因此 STABLE 上的最后一次提交是 HEAD^1(第一个父级),而 FEATURE 上的最后一次提交是 HEAD^2(第二个父级)。

因此,要显示 FEATURE 引入的最后更改,您可以使用:

git show HEAD^2

显示之前的:

git show HEAD^2~1

等等。

【讨论】:

    【解决方案3】:

    在您的情况下,合并前的最后一次提交具有 78d9687 哈希值。它是提交消息中的第二个。 所以如果你想知道是谁做的尝试

    $ git show 78d9687
    

    【讨论】:

      猜你喜欢
      • 2017-06-19
      • 2022-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 2012-03-02
      • 2011-06-03
      • 1970-01-01
      相关资源
      最近更新 更多