我看过When do you use git rebase instead of git merge? 。
但我想确定在这种情况下选择哪种解决方案:
我想在master
上实现一个新功能,所以我将它分支到一个新的功能分支
我在功能上做了10次提交,而其他人在Master上做了其他提交。
我的问题是,如果我想将我的分支与Master保持分离以进行测试,但我需要使用集成的新Master提交来测试它。
那么,我应该将Master合并到Feature(而不是Feature to Master,它会在我的测试之前对master进行修改)或者rebase
吗?
答案 0 :(得分:5)
为什么不创建一个新分支来测试合并版本?例如:
git checkout -b test-merged-feature master
git merge my-feature
[... do your testing ..]
没有特别的理由在这里做一个rebase,但如果你还没有推动你的功能分支,那也没关系。这些问题部分是关于你希望你的历史看起来如何 - 有些人不喜欢看到很多合并;有些人更喜欢它作为一种跟踪哪些提交对特定功能有贡献的方式。
答案 1 :(得分:5)
除非你已经推动了你的分支(并且你知道其他人已经克隆了你的回购),我仍然会做一个变形,正如我在我自己的回答“git rebase vs git merge”中提到的那样。
是否测试,每次更新我的本地仓库(git fetch)时,我通常会做一个rebase,以确保最终合并(Feature
到master
)将是一个快进一。
所以这不仅仅是关于你的历史看起来如何,而是主要是关于确保你正在开发的东西不是基于master
的旧版本,并继续努力反对最近的进展master
随着时间的推移。
答案 2 :(得分:5)
在我熟悉的工作流程中,有一个主干,集成分支和功能分支
我一直在向'衍生'分支机构进行重组。 (通过派生分支,我的意思是从主干到AWAY的方向),并合并到集成分支。
我喜欢我总是在一个与我将要整合的分支具有相同历史的分支中工作。我喜欢合并成为一个快进,因此,我知道我刚刚合并的内容与我在分支中测试的内容完全相同。
答案 3 :(得分:0)
当2个开发人员提交相同的repo时(这会产生冲突),你可以通过创建合并提交来合并2个提交,或者你可以在另一个提交之上重新提交1个提交(你的)。最好更改而不是生成合并提交。