合并了两个Git分支,推送到服务器上,现在如何取消它们

时间:2013-01-17 19:23:55

标签: git merge push production-environment

我的代码在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分支并让我的主人回来呢?

2 个答案:

答案 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