两个分支都在彼此之后。如何合并这两个分支?

时间:2014-12-11 11:20:47

标签: git git-merge git-push git-pull bitbucket-server

考虑的分支位于已发布的存储库服务器中。

考虑一个分支A,它包含一组从中创建分支B的提交。 额外的提交被添加到分支B(假设它们处于活动开发中) 此时,将向分支A添加提交。

现在分支A在分支B后面,让我们说10次提交,分支B在分支A后面一次提交。

现在这两个分支无法合并,因为它们至少在一次提交后都是彼此之后的。 为了使所有内容保持同步,如何合并分支A和B?

1 个答案:

答案 0 :(得分:5)

您可以使用git merge合并两个分支。我不建议在这种情况下使用git rebase,因为您说两个分支都已发布到存储库服务器。

我已经创建了以下情况(在您的帖子中描述):

$ git co A
$ git lg --all
* 4df39d7 - (HEAD, A) 2nd commit on A (9 seconds ago)
| * f1f57d8 - (B) 1st commit on B (39 seconds ago)
|/
* 8228446 - (master) . (2 minutes ago)

$ git co B
$ git lg --all
* 4df39d7 - (A) 2nd commit on A (2 minutes ago)
| * f1f57d8 - (HEAD, B) 1st commit on B (3 minutes ago)
|/
* 8228446 - (master) . (4 minutes ago)

假设我们在分支B中,您可以通过执行以下操作合并Agit merge A

将历史转化为:

$ git merge A
$ git lg --all
*   5517453 - (HEAD, B) Merge branch 'A' into B (2 minutes ago)
|\
| * 4df39d7 - (A) 2nd commit on A (5 minutes ago)
* | f1f57d8 - 1st commit on B (6 minutes ago)
|/
* 8228446 - (master) . (7 minutes ago)

附加说明:

我创建的git lggit coaliases,以便更轻松地使用git命令行。他们代表(在.gitconfig上配置):

lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
co = checkout