我的代码在master分支中,然后有另一个名为dev的分支,dev比我的master分支提交少,在合并之前我甚至采用了主分支备份'master-backup'。
然后我将dev合并为master,并将合并的master分支推送到服务器(git push origin master)。
所以现在我的git日志看起来像
提交5(已经在主人中)
提交4(来自开发分支)
提交3(来自dev-branch)
提交2(已经在主人中)
提交1(来自开发)
其他提交已经在两个分支
中上面是场景,现在我遇到的问题是我想从master删除dev分支提交,我希望我的旧主分支回来,即主备份中的任何内容,我想要在master中提交
我该怎么办?由于dev混合提交已经合并到master并推送,我怎么能删除dev分支并让我的主人回来呢?
答案 0 :(得分:4)
听起来,对于即时修复,您只需将master
替换为服务器上的master-backup
即可:
git push --force origin master-backup:master
对于稍微长一点的答案,您有两种选择。最简单的方法是使用git-reset
,但如果没有其他人看过这个分支,你应该 这样做,否则你将毁了她的一天。
一个提交前master
的版本称为master^
。因此,首先使用git log master^
绝对确定它是您要保留的版本,然后签出master
:
git reset --hard master^
然后在您的服务器上进行更新:
git push --force origin master
您的第二个选择是仅使用git revert HEAD
进行新的提交,撤消合并中的所有更改,并推送它。但如果您将来尝试再次合并,则会有unexpected consequences。
答案 1 :(得分:0)
你只是想把主备份推回主人? git checkout master-backup
然后git push -f origin master
。