我有以下情况:
clone
rebase
merge
push
问题是,在执行rebase时,我们被要求执行前面merge步骤中已经完成的所有合并。除了重新进行合并之外,有没有解决这个问题的办法?
我预计这会非常简单,因为我们已经解决了相互冲突的合并。
72qzrwbm1#
在进行了大量工作和多次合并之后,git merge --squash现在是我首选的重新基址方式(请参见此答案)。如果您正在处理的分支名为my-branch,并且您想要从master重新基址,则只需执行以下操作:
git merge --squash
my-branch
master
git checkout my-branchgit branch -m my-branch-oldgit checkout maingit checkout -b my-branchgit merge --squash my-branch-oldgit commit
git checkout my-branch
git branch -m my-branch-old
git checkout main
git checkout -b my-branch
git merge --squash my-branch-old
git commit
bhmjp9jg2#
改变基数以获得“干净”的历史被高估了。如果您想保存历史,最好的方法就是进行合并,而不是重新基址。这样,如果您需要返回到某个修订版,它将与您在开发期间测试的版本“完全”相同。这也解决了有关先前解决的合并冲突的问题。
如果您不关心保存历史,您可以从master创建一个新的分支, checkout 它,然后执行git read-tree -u -m dev来更新您的工作树以匹配dev分支。然后,您可以将所有内容提交到一个大提交中,并像往常一样将其合并到master中。
git read-tree -u -m dev
dev
oyxsuwqo3#
两句话:
git rerere
在git rerere查看更多信息。
xeufq47z4#
您可以采用分支中的所有更改,并将它们放入master中的新提交中,具体如下:
git diff master > my_branch.patchgit checkout masterpatch -p1 < my_branch.patch
git diff master > my_branch.patch
git checkout master
patch -p1 < my_branch.patch
然后暂存您的文件并提交。
qlfbtfca5#
关于合并冲突的重播,您可以使用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
5条答案
按热度按时间72qzrwbm1#
在进行了大量工作和多次合并之后,
git merge --squash
现在是我首选的重新基址方式(请参见此答案)。如果您正在处理的分支名为my-branch
,并且您想要从master
重新基址,则只需执行以下操作:bhmjp9jg2#
改变基数以获得“干净”的历史被高估了。如果您想保存历史,最好的方法就是进行合并,而不是重新基址。这样,如果您需要返回到某个修订版,它将与您在开发期间测试的版本“完全”相同。这也解决了有关先前解决的合并冲突的问题。
如果您不关心保存历史,您可以从master创建一个新的分支, checkout 它,然后执行
git read-tree -u -m dev
来更新您的工作树以匹配dev
分支。然后,您可以将所有内容提交到一个大提交中,并像往常一样将其合并到master中。oyxsuwqo3#
两句话:
git rerere
,则可以避免合并冲突(在rebase期间),这是针对这种情况所做的。在
git rerere
查看更多信息。xeufq47z4#
您可以采用分支中的所有更改,并将它们放入
master
中的新提交中,具体如下:然后暂存您的文件并提交。
qlfbtfca5#
关于合并冲突的重播,您可以使用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