我有一个分支,我需要在某个时候合并回dev。通常我会使用变基而不是普通拉取,所以我的提交都整齐地位于提交树的顶部。
我担心的是我必须解决很多合并冲突。如果我拉动而不变基,那么旧的提交将始终在那里引用,所以我可以丢失多少工作是有限的。
如果我独自一人拉动而不变基,当我需要将我的分支合并回 dev 时,这会带来任何风险吗?
绝对不是。事实上,拉取比变基更安全(因为您可以减少可能包含隐藏更改的合并提交)。人们更喜欢变基而不是拉动的主要原因是保持修订树尽可能线性。
与变基相比,拉取丢失数据的风险不多或少。它们本质上是相同的,除了提交的顺序(除了我上面提到的合并提交中的隐藏更改)。
我认为拉取比变基更好,因为拉取中的合并提交只是在您进行有效更改后解决冲突(理想情况下),而变基冲突解决提交包括有效更改和冲突解决。
如果您可以合并回dev
而不是稍后在其上变基,那么您将只解决一次合并冲突,就像您拉动而不变基一样(这实际上是将dev
合并到您的分支中)。
如果您最终需要在推送之前在dev
之上变基,那么除非您rebase -p
保留合并提交,否则您可能必须重新解决合并冲突。
目前的两个答案都是正确的。但是,git 确实允许这种确切的工作流程(变基)并且只解决冲突一次。
Git rerere(代表重用记录的分辨率)如果启用此选项,git 将自动解析合并,其中包含您第一次进行合并时的历史信息。