在同时处理3个以上的分支时,适当管理git branch历史的工作流程是什么?

时间:2017-06-03 01:28:18

标签: git github

总结问题:git在多个分支上同时处理多个人的正确工作流程是什么,在重叠的文件集上,变更不按时间顺序排列?

鉴于分支A和B处于拉请求阶段且分支Z已经合并到主服务器,开始分支C开发需要Z的功能的正确工作流程是什么,除了来自B的一些更好的文件,这些注定要超越Z的变化,但是还没有通过拉动请求来让它掌握。

重新创建相关情况的步骤

  1. 将github项目克隆到我的本地计算机。
  2. 创建一个新的分支A并在github上进行更改,提交,推送到同名的原始分支,进行拉取请求
  3. 创建一个新的分支B并进行更改,提交,推送到github上的同名原始分支,发出拉取请求
  4. 与此同时,有人制作了一个分支Z,推到了原始分支,并且已经合并了拉取请求。
  5. 如何开发需要Z和B的功能?警告是Z和B包含对相同文件的修改。对于某些文件,我想要Z版。对于其他人,我想要B版。
  6. 开始使用功能C的正确步骤是什么?我知道我需要Z和B去做。我应该对我的本地主人做一个git pull来拿起Z,做一个分支C,然后把B合并到C?我尝试了这个,但它没有工作,因为B的旧文件接管我想要的更改Z.有没有办法手工挑选我希望Z的更改除了几个文件,我想要从分支B得到:changefromb.c,changefromb.h。

    或者我做错了吗?既然我们一群人每天都在推动事物,我发现我不知道git的哪些功能可以正确处理。

3 个答案:

答案 0 :(得分:1)

git checkout可让您选择所需的文件:

git checkout B changefromb.c # places B's copy of changefromb.c into current branch

如果你想要B的文件的确切副本来创建C,我将从分支Z创建一个分支C并使用上面的命令从B复制相关的更改。

否则,如果要复制B中的更改并将其应用于现有版本的Z,则可以使用cherry-picking从B中选择特定提交以复制到新分支C.关于提交的“原子”程度,你可能必须创建一个单独的“清理”提交来撤消来自樱桃选择提交的无关更改。

答案 1 :(得分:0)

我发现解决这个问题最简单的方法就是让自己领先于master分支,它来自真正的master,但也包含尚未在master中的最新代码。我一直在打电话给分公司大师 -

答案 2 :(得分:0)

您可以使用“git flow”。人们已经问自己同样的问题,并提出了这种管理多个分支机构工作的好方法。

https://danielkummer.github.io/git-flow-cheatsheet/

本教程完美地解释了它。