考虑的分支位于已发布的存储库服务器中。
考虑一个分支 A,其中包含一组从中创建分支 B 的提交。额外的提交被添加到分支 B 中(假设它们处于活跃开发中)此时,将提交添加到分支 A。
现在分支 A 落后于分支 B,假设有 10 个提交,分支 B 落后于分支 A 一个提交。
现在这两个分支不能合并,因为它们至少通过一个提交相互支持。为了使所有内容保持同步,如何合并分支 A 和 B?
您可以将两个分支与 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
您可以通过执行以下操作来合并A
:git 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 lg
和 git co
是我创建的别名,以便更轻松地使用 git 命令行。他们代表(在我的.gitconfig
上配置):
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
co = checkout