这是可能的,Git Magic 教程将解释如何做到这一点。但是如果其他人看到了你的分支,那么就不安全了。即使没有其他人看到你的分支,我也建议你重新考虑。
变基的目的是重写历史,使您的存储库反映出您认为软件应该发展的方式,而不是实际发展的方式。什么时候这很重要?当您是分布式开发团队的初级成员,并且您没有提交权限-相反,您只能向门卫提交补丁,并希望它们被接受。为了最大化接受的机会,您想重写历史,使您的补丁尽可能清晰明了。这种开发模型听起来熟悉吗?
Manoj Srivastava 写了一篇关于变基与合并的相当深入的分析。
我过去使用以下方法取得了成功:
对于这种方法,我已添加了以下别名:
up = pull --rebase origin
当从远程repo拉取更改时:
YMMV
git config --global branch.master.rebase
和 git config --global branch.autosetuprebase always
(如果你想针对特定分支这样做,你总是可以获取和合并)。 - Dustingit log
git reset HEAD^
下次建议先执行 git fetch
,然后再进行第 3 步的变基操作。
我建议创建当前 git 仓库的小 tar 包备份,以防万一变基操作出错。当您感到更加自信时,这种操作会越来越少(通常可以使用 git 解决几乎所有问题,但有时候 tar 包会更快速)。
您应该能够通过以下方式更改分支来撤消上次的合并:
git branch your-changes <reflog of "Reworked test files...">
git branch -f master remotes/origin/master
接下来你可以尝试变基。