我是一个新手,刚开始学习git命令,最近学到了git rebase命令。对于为什么git rebase命令会逐个重放功能分支的提交记录而不是只重放最新提交记录,我产生了疑问。
以下是我在项目中遇到的情况:
M1 --- M2 --- M3 --- M4
|
M2 --- F1 --- F2 --- F3
我们有4名开发人员参与了项目,我从上游/主分支的M2点派生了该项目。 我开始开发我的功能并添加了提交。 提交F1是一些基本代码。 然后提交F2是对提交F1进行的一些错误修复,类似地,提交F3是对提交F2中的代码进行的错误修复,而F3是我最终准备好的功能代码。
同时,其他开发人员完成了他们的功能,并将其代码合并到上游/主分支中。 现在我必须把我的代码放在他们的功能之上,即M4。 下面部分是我对git rebase的理解,我可能错了:
我检出了功能分支并使用upstream/master进行了git rebase,这种方式将我的功能分支放在M4之上,并开始逐个重播我的提交(F1,F2和F3)。 我在F1重放时遇到了冲突,并解决了它们。 因为F2是对F1的错误修复,所以我在同一位置再次遇到了类似的冲突,并再次解决了它们。 最后,当F3被重播时,我再次在同一位置遇到了类似的冲突。 我解决了冲突,一切正常。
但是,如果git尝试仅将我的功能分支的最后一个提交放在M4之上,则只需要解决一次冲突。 [因为我的F3代码也会包含F1和F2的代码]。 所以为什么需要这些额外的重播。
我可能遗漏了一些基本概念,请在我思考错误的地方纠正我。 谢谢!
git merge
。只需在主分支上检出,然后执行git merge {yourbranch}
即可。 - Raul Rene