在git中合并远程分支

5
我正在开发一个系统,其中我遵循另一个项目的踪迹,添加自己的内容,但不直接添加到原始项目中。我使用三个远程分支设置我的存储库:
  1. Master - 我的开发地点。
  2. Vendor - 我定期与原始项目同步的地方。
  3. Integration - 我想要将(Master)和(Vendor)合并在一起的地方。
我的工作流想法是同步自动进行(因为它基本上是某种快进),而集成是半手动的(因为需要合并和修复)。我已经完成了第一部分(同步),但我无法弄清楚应该实际发出哪些命令来将Master和Vendor集成到Integration中。
这是git branch -a的输出:
* integration
  master
  vendor
  remotes/origin/HEAD -> origin/master
  remotes/origin/integration
  remotes/origin/master
  remotes/origin/vendor

我应该如何继续进行以下步骤:

  1. 将此工作区与远程存储库同步?
  2. 将供应商(vendor)和主(maser)分支合并到集成(integration)分支中?
  3. 将集成分支推送回远程存储库?

如果我的工作流有任何错误,请告诉我。


集成分支不是必要的,供应商分支已经拥有来自供应商和主分支的代码。请注意,每个分支实际上都是一个引用(在C++中是指针),它引用了提交点。在这种情况下,供应商分支已经是您在集成分支中所需的内容。 - TheOneTeam
在这种情况下,供应商没有来自主项目的代码。可以将其视为两个平行的项目,其中A(我的项目)需要B(另一个项目)的更新,但反之则不需要。 - Eldad Mor
1个回答

2
尽管将 vendor 直接整合到 master 中也是可行的,但使用 integration 分支会更加方便。要将分支 A 整合到分支 B 中,有以下两种方法:
  • A 合并到 B 中(但这意味着您在 B 中当前进行的任何开发都需要“暂停”,直到解决所有合并冲突并重新运行所有测试)
  • B 顶部变基到 A 上(git rebase A),但这将更改 B 的历史记录。
我建议将 integration 变基到 Vendor 上,解决冲突,然后将 integration 合并到 master 中,以保持 master 的线性历史记录。

我想要持续集成供应商和主分支,但不干扰主分支上当前的进展(所提到的集成可能很长),这就是为什么我需要集成分支。将集成分支重新基于供应商是一个好主意。我缺少的是实际执行合并所需的命令,因为我过去尝试的方法并没有真正起作用。 - Eldad Mor
@EldadMor 如果你不将 Integration 推送到公共仓库,那么 git checkout Integration; git rebase Vendor; git checkout master; git merge Integration 就足够了。这样做可以让你随时进行变基操作。 - VonC
我想那就是我尝试过的,我会重新尝试并回报结果。谢谢! - Eldad Mor
@EldadMor:啊,好的 - 我从问题中没有看出来。 - Mark Longair
@MarkLongair - 是的,那是因为它没有被提到 :-) 在这种情况下,我已经设置了分支,并且出于各种原因,我非常喜欢它们现在的方式,只是似乎无法成功地将它们合并。 - Eldad Mor
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接