如果你git rebase -i '@{upstream}'
(如描述的挤压)你可能有真正的冲突,需要真正的解决方案。如果您只是复制粘贴更改,那么您可能正在撤消自您开始功能开发回归功能以来发生的远程更改。
如果您知道这对单个文件是安全的,那么在变基期间您总是git checkout --theirs $file
可以避免复制粘贴,尽管这将替换整个文件,这可以替换自动合并的大块;在这种情况下,“他们的”是正在应用的更改集,即您的更改。
如果您确定始终如此,则可以设置合并策略,例如git rebase -m -s merge-recursive -X theirs -i '@{upstream}'
.
注意:这只适用于最新版本的 Git 中的交互式变基。
在我看来,一个更简单的方法是做git rebase -i
\ git merge-base HEAD '@{upstream}'\
(如所描述的挤压)有效地将分支重新定位到自身上。结果将不会在此步骤中解决合并冲突,因为更改是按照它们在相同代码上创建的相同顺序应用的。然后git rebase '@{upstream}'
,您将以正常方式解决与上游的冲突。
更容易,假设您可以很好地管理文件,将是git reset
\ git merge-base HEAD '@{upstream}'\
。此时,您只需将更改的文件添加到阶段并进行新的提交,该提交可以重新设置,如上一段所述。