2011-10-31 133 views
5

我正在开发一个系统,我正在追踪另一个项目的路径,将我自己的东西添加到原始项目中,但没有直接添加。我使用三个远程分支安装我的存储库:在git中合并远程分支

  1. 主 - 我的开发发生在哪里。
  2. 供应商 - 我在哪里定期与原始项目同步。
  3. 集成 - 我想合并(主)和(供应商)在哪里。

我的工作流想法是让自动发生同步(因为它基本上是一种快速的排序),并且集成是半手动的(因为它需要合并和修复)。我已经介绍了第一部分(同步),但我无法弄清楚将Master和Vendor集成到集成中实际发布的命令。

这是的Git分支的输出-a

* integration 
    master 
    vendor 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/integration 
    remotes/origin/master 
    remotes/origin/vendor 

我怎么往前走,从这个点:

  1. 同步此工作空间与远程仓库?
  2. 将供应商&合并成集成?
  3. 将集成推回到远程存储库?

很明显,如果我在工作流程中遇到问题,我很乐意听到它。

+0

集成分支不是必需的,供应商分支已经有供应商和主要的代码。请注意,每个分支实际上都是一个引用(在C++中的指针),它引用了提交点。在这种情况下,供应商分支已经是您在集成分支中需要的东西 –

+0

在这种情况下,供应商没有来自主人的代码。把它看作两个并行项目,其中A(我的项目)需要B(另一个项目)的更新,但反之亦然。 –

回答

2

虽然integration分支不是绝对必要的(你可以直接vendor融入master,通过对vendor上衍合master),它可以是有用的。

的一个分支B集成分支A可以这样做:

  • 合并在BA(不过这意味着你在B有任何当前的发展是“保持”等待任何合并冲突的决议,并重新运行所有测试)
  • 重新标记BAgit rebase A)之上,但那会改变B的历史。

我对Vendor顶部变基integration,解决任何冲突,在那里,然后在master合并integration,保持master历史线性的。

+0

我想持续整合供应商和主控制器,但不干扰主控器上的当前进度(上述集成可能很长),这就是为什么我需要集成分支。实际上,重新启动供应商集成是一个好主意。我错过的是执行合并所需的实际命令,因为我过去尝试过的并不真正起作用。 –

+0

@EldadMor'git checkout集成; git rebase Vendor; git checkout master; git merge Integration'应该足够了。这意味着你不会把'Integration'推到公共回购站,这样你就可以根据需要随时重新整合它。 – VonC

+0

我想这就是我的尝试;我会重试并取回结果。谢谢! –