【问题标题】:Git merge - Source and destination branch name identificationGit 合并 - 源和目标分支名称标识
【发布时间】:2014-05-13 21:27:53
【问题描述】:

对 git 合并有疑问,假设我有 2 个分支 - B1 和 B2,其中 B2 是从 B1 创建的。开发在两个分支中并行进行,如下所述 - 提交“6、7、8”属于分支“B2”,“1、2、3、4、5、9、10”属于分支“B1”,其中提交“10”是一个合并的提交。

            / - 6 - 7 - 8 - \ 
----1 - 2 - 3 - 4 - 5 - 9 - 10 (Merged commit)

我的问题是 - 可以提交“10”,不知何故,告诉我源分支(合并的分支)是 B2,目标分支(B2 合并的分支)是 B1?

我查看了“git show”选项,但一无所获。

我知道使用“git log --graph”和gitk我可以手动检查,但是当有大量提交时会变得非常困难,如果有快进合并和大量合并活动则更加困难存储库。提交 cmets 是另一种选择,但不能真正依赖它。所以我想知道“git show”或任何其他 git 命令是否可以提供此信息。

【问题讨论】:

    标签: git github merge


    【解决方案1】:

    如上所述in this answer

    git show --format="%P" <SHA>
    

    在大多数合并的情况下,签出分支的 SHA 将是第一个父级,而合并到的分支的 SHA 将是第二个。

    基本上,签出的分支始终是第一个父级;其他父级是按其规范顺序指定给合并命令的分支。

    因此对于每个 SHA1,您可以检查它们属于哪个分支:“How to list branches that contain a given commit?”,然后以这种方式返回B1(目标),然后返回B2(合并)。

    话虽如此,请记住分支在 git 中是瞬态的:它们可以随时重命名或移动。

    【讨论】:

    • 感谢 VonC 的超快速响应。 “git branch -a --contains SHA”列出了所有可以访问的分支。想知道是否可以显示合并到签出分支的特定分支。
    • @ajay.gour 仅对git show --format="%P" &lt;merged_commit_SHA&gt; 返回的第二个 SHA1 执行 git branch -a --contains SHA:第二个 SHA1 是已合并到目标分支的分支。
    • 再次感谢。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 2020-06-15
    • 2016-06-24
    • 2020-12-20
    • 2016-12-07
    • 1970-01-01
    • 2013-09-10
    • 2014-03-08
    • 1970-01-01
    相关资源
    最近更新 更多