我已经在一个功能分支上工作了几个月,最终提交了数百次。我运行了 git rebase 并通过了数百个解决方案,它终于同步了。然后我再次运行 git rebase origin/master 并重新开始,我坚持并解决了冲突并完成了这个过程。
出于好奇,我再次使用 -i "git rebase -i HEAD~211" 尝试了 git rebase origin/master,因为我有 211 个提交,我想压扁,但它要求我再次经历相同的过程,即解决所有冲突。
有人可以建议我在这里做错了什么吗?我怎样才能达到它说不需要 rebase 的地步。当我运行 git merge origin/master 时,它会提示它是最新的,这就是我想要的 rebase。我不想将我的功能分支推送到历史上有数百次提交的 master 中。有4个文件在冲突解决中不断重复。我有他们的备份。
我一直在做 git add/rm file-name 和 git rebase --continue 等,但没完没了。
我应该像每天一样定期重新定基以避免这种情况吗?
git rebase master
git rebase origin/master
git rebase -i HEAD~211
git add file-name
git rm/add file-name
git rebase --continue
每次我运行 git rebase 它都会重新开始整个过程并要求我解决冲突
如果您不断重新设置一个长期存在的分支,那以及您所说的其他一切都是完全正常的。您可以使用
git rerere
简化 rebase 冲突解决路径——这就是它的用途。你给它展示一次如何解决冲突,它下次就会记住。
不过,就我个人而言,我推荐反向合并——也就是说,将
master
合并到长期存在的分支中以使其保持最新。一周一次就够了。这样一来,冲突的可能性就会大大降低,如果有的话,你解决一次就完事了,你再也不会看到那个了。您最终 PR 的结构不会受到实质性影响。