Git merge - 源和目标分支名称标识

时间:2014-05-13 13:24:42

标签: git github merge

关于git合并有一个问题,假设我有2个分支 - B1和B2,其中B2是从B1创建的。如下所述,开发在两个分支中并行进行 - 提交" 6,7,8"属于分支" B2"和" 1,2,3,4,5,9,10和#34;属于分支" B1"在哪里提交" 10"是一个合并的提交。

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

我的问题是 - 可以提交" 10",不知何故,告诉我源分支(合并的那个)是B2而目的地(合并的一个B2)是B1?

我调查了" git show"选项却一无所获。

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

1 个答案:

答案 0 :(得分:1)

如上所述in this answer

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

在大多数合并的情况下,已检出的分支的SHA将是第一个父,并且合并的分支的SHA将是第二个。

     

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

因此,对于每个SHA1,您可以检查它们属于哪个分支:&#34; How to list branches that contain a given commit?&#34;,然后返回B1(目的地),然后B2(合并)那样。

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