总结问题:git在多个分支上同时处理多个人的正确工作流程是什么,在重叠的文件集上,变更不按时间顺序排列?
鉴于分支A和B处于拉请求阶段且分支Z已经合并到主服务器,开始分支C开发需要Z的功能的正确工作流程是什么,除了来自B的一些更好的文件,这些注定要超越Z的变化,但是还没有通过拉动请求来让它掌握。
重新创建相关情况的步骤
开始使用功能C的正确步骤是什么?我知道我需要Z和B去做。我应该对我的本地主人做一个git pull来拿起Z,做一个分支C,然后把B合并到C?我尝试了这个,但它没有工作,因为B的旧文件接管我想要的更改Z.有没有办法手工挑选我希望Z的更改除了几个文件,我想要从分支B得到:changefromb.c,changefromb.h。
或者我做错了吗?既然我们一群人每天都在推动事物,我发现我不知道git的哪些功能可以正确处理。
答案 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/
本教程完美地解释了它。