我有以下情况:
- 我
clone
从主存储库(X)创建了(Y),因为有很多人在Y上工作,我们rebase
只做merge
s就不做任何事情。当我们想将push
Y交付给X时,我们想做一个arebase
以便使事情变得干净整洁
问题在于,这样做时,rebase
我们被要求执行之前merge
步骤中已经完成的所有合并。除了实际上意味着重新进行合并的解决方案之外,还有其他解决方案吗?
我希望它非常简单,因为我们已经解决了冲突的合并。
Answers:
重新获得“干净的”历史记录被高估了。如果要保留历史记录,最好的方法是进行合并而不是重新设置基准。这样,如果您需要返回到修订版本,则该版本与您在开发过程中测试的版本完全相同。这也解决了有关先前解决的合并冲突的问题。
如果您不关心保存历史记录,则可以从master分支创建一个新分支,将其检出,然后执行agit read-tree -u -m dev
更新您的工作树以匹配该dev
分支。然后,您可以将所有内容提交到一个大提交中,然后像往常一样将其合并到master中。
--squash
。如果分支上有N个提交,则常规合并会将N个或N + 1个提交添加到master 。上面的建议或将始终仅向master添加一次提交。merge --squash
两句话:
git rerere
,则可以避免合并冲突(在变基期间),这是针对这种情况而完成的。git rerere
。关于合并冲突的重播,您可以使用git rerere维护一个数据库,该数据库已解决合并冲突的方式,因此执行导致相同冲突的rebase将自动为您完成繁琐的工作。
https://hackernoon.com/fix-conflicts-only-once-with-git-rerere-7d116b2cec67
git config --global rerere.enabled true
需要注意的一件事是,如果您解决不正确的问题,下一次它也会自动为您困扰,您可能并没有真正意识到这一点。
此处提供更多正式文档:https://git-scm.com/docs/git-rerere