2

我的代码在 master 分支中,然后还有另一个名为 dev 的分支,dev 比我的 master 分支领先一些提交,在合并之前我什至做了一个 master 分支备份“master-backup”。

然后我将 dev 合并到 master,并将合并的 master 分支推送到服务器(git push origin master)。

所以现在我的 git log 看起来像

提交 5(已经在 master 中)

提交 4(来自 dev 分支)

提交 3(来自开发分支)

提交 2(已经在 master 中)

提交 1(来自开发)

其余的提交已经在两个分支中

以上是场景,现在我被卡住的问题是我想从 master 中删除 dev 分支提交,我想要我的旧 master 分支,即 master-backup 中的任何内容,我想要 master 中的提交

我该怎么做?由于 dev 混合提交已经合并到 master 并推送,我怎样才能删除 dev 分支并让我的 master 恢复原样?

4

2 回答 2

4

听起来,为了立即修复,您可以在服务器上替换mastermaster-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新的提交来撤消合并中的所有更改,然后将其推送。但是,如果您将来尝试再次合并,则会产生意想不到的后果。

于 2013-01-17T19:30:22.163 回答
0

您只是想将 master-backup 推回 master 吗?git checkout master-backup然后git push -f origin master

于 2013-01-17T19:30:04.400 回答