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

合并了两个Git分支,推送到服务器上,现在如何取消合并它们,git,merge,push,production-environment,Git,Merge,Push,Production Environment,我在主分支中有我的代码,然后还有另一个名为dev的分支,dev比我的主分支提前了几次提交,在合并之前,我甚至做了一个主分支备份“masterbackup” 然后我将dev合并到master中,并将合并的master分支推送到服务器git-push-origin-master上 所以现在我的git日志看起来像 commit 5已在master中 提交4来自开发分支 提交3来自开发分支 提交2已在master中 提交1来自dev 其余的提交已在这两个分支中 上面就是这个场景,现在我遇到的问题是我想从

我在主分支中有我的代码,然后还有另一个名为dev的分支,dev比我的主分支提前了几次提交,在合并之前,我甚至做了一个主分支备份“masterbackup”

然后我将dev合并到master中,并将合并的master分支推送到服务器git-push-origin-master上

所以现在我的git日志看起来像

commit 5已在master中

提交4来自开发分支

提交3来自开发分支

提交2已在master中

提交1来自dev

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

上面就是这个场景,现在我遇到的问题是我想从master中删除dev分支提交,我想恢复我的旧master分支,也就是说,无论master backup中有什么,我都希望master中有提交


我怎样才能做到?既然dev混合提交已经合并到master中并被推送,我如何删除dev分支并使master恢复原样?

您只想将master backup作为master推送回去?git签出主备份,然后git push-f origin master。

您只想将主备份作为主备份推回吗?git checkout master backup然后是git push-f origin master。

听起来,要立即修复,您可以在服务器上用master backup替换master:

git push --force origin master-backup:master
对于稍长的答案,您有两个选择。最简单的方法是使用git reset,但是只有在没有其他人看到这个分支的情况下,你才应该这样做,否则你会毁了她的一天

主控一次提交之前的版本称为主控^。因此,首先使用git log master^绝对确保它是您要保留的版本,然后签出master:

git reset --hard master^
然后在服务器上更新:

git push --force origin master

第二种选择是只使用git revert HEAD进行新的提交,撤消合并中的所有更改,然后推送它。但如果您以后再次尝试合并,则会出现这种情况。

听起来,要立即修复,您可以在服务器上用主备份替换主备份:

git push --force origin master-backup:master
对于稍长的答案,您有两个选择。最简单的方法是使用git reset,但是只有在没有其他人看到这个分支的情况下,你才应该这样做,否则你会毁了她的一天

主控一次提交之前的版本称为主控^。因此,首先使用git log master^绝对确保它是您要保留的版本,然后签出master:

git reset --hard master^
然后在服务器上更新:

git push --force origin master

第二种选择是只使用git revert HEAD进行新的提交,撤消合并中的所有更改,然后推送它。但如果您以后再次尝试合并,则会出现这种情况。

您应该能够将主分支重置为主备份点要提交的相同提交,然后强制推送到远程存储库。但是,您将丢失自备份以来对主存储库所做的任何提交。您应该能够将主分支重置为主备份指向的相同提交,然后强制推送到远程存储库。但是,您将丢失自备份以来对master所做的任何提交。首先,我已要求所有其他人暂时不要从repo中提取,其次,我的服务器仍在master的早期版本上,因为代码尚未发布。但关键是我不想只返回一次提交,因为来自开发分支的提交到处都是,如前所述,有一个提交3,提交1,我也想删除,所以只返回一次提交不会解决我的问题,我想保留我的主提交,不能失去它们,你很在行。您应该可以安全地覆盖master。但关键是我不想只返回一次提交,因为来自dev分支的提交到处都是,正如前面提到的,有一个提交3,提交1,我也希望删除它,所以只返回一次提交不会解决我的问题,我也希望保留我的master提交,不能承受失去他们但你确实想回去一次你做了一次合并,对吗?您的最后一次提交是master和dev之间的合并。如果您删除它,那么从dev引入的所有提交也将消失。尝试git log-oneline-graph-decoration来了解我的意思,返回一次提交将在主分支上执行,它应该是主分支在合并之前指向的提交。换句话说,来自dev的所有提交将不再出现在主分支中。为了自己验证这一点,请克隆您的repo并试用它。首先,我已要求所有其他人暂时不要从repo中退出,其次,由于代码尚未发布,我的服务器仍在早期版本的master上。但关键是我不想只返回一次提交,因为来自dev分支的提交到处都是,正如前面提到的,还有一个提交3,提交1,我也想删除它,所以只返回一次提交不会解决问题
我的问题是,我也要保护我的主人,我不能失去他们。太好了,你很能干。您应该可以安全地覆盖master。但关键是我不想只返回一次提交,因为来自dev分支的提交到处都是,正如前面提到的,有一个提交3,提交1,我也希望删除它,所以只返回一次提交不会解决我的问题,我也希望保留我的master提交,不能承受失去他们但你确实想回去一次你做了一次合并,对吗?您的最后一次提交是master和dev之间的合并。如果您删除它,那么从dev引入的所有提交也将消失。尝试git log-oneline-graph-decoration来了解我的意思,返回一次提交将在主分支上执行,它应该是主分支在合并之前指向的提交。换句话说,来自dev的所有提交将不再出现在主分支中。为了验证这一点,你可以克隆你的回购协议并尝试一下。我听说强制推送有负面影响,这是一个安全的赌注吗?听说这可能会导致问题,别忘了还有更多的人也在进行回购,这会影响他们的工作吗,他们仍然在最后一次安全地对master进行承诺,到目前为止还没有采取最新的masteryet@grandmaster只要没有其他人拉过新主人,你就没事了。当有人拉一个已提交的分支并基于它开始工作时,就会出现问题。然后,强制提交会给此人带来严重的麻烦。如果每个人都在主备份的最新提交中,这应该没问题。我听说强制推送会产生负面后果,这是安全的赌注吗?听说这可能会导致问题,别忘了还有更多的人也在进行回购,这会影响他们的工作吗,他们仍然在最后一次安全地对master进行承诺,到目前为止还没有采取最新的masteryet@grandmaster只要没有其他人拉过新主人,你就没事了。当有人拉一个已提交的分支并基于它开始工作时,就会出现问题。然后,强制提交会给此人带来严重的麻烦。如果每个人都还在进行主备份的最新提交,那么应该没问题。