多次合并后如何从Git合并回滚

时间:2019-10-22 09:01:59

标签: git merge revert

好,所以我今天遇到这种情况,我将一个分支合并到另一个开发人员的母版中,后者错误地将他的开发工作与他需要部署的变更合并到了该分支中。在我已将其推送到远程(然后将其部署到某些生产服务器上-当时是经过一番尝试)之后,我尝试回滚合并,但是由于我找不到共同的或最初的祖先而无法这样做。

出现问题:

Dev基于master创建一个新分支,并且在工作和测试周期中,定期将master合并到dev分支中,然后将其推送到远程跟踪分支。每周大约进行2个月。

同时,其他开发人员已将master合并到其分支中,然后将合并的分支合并回master中以进行测试和部署。因此,在这两个月内,这个devs分支充斥着他的工作以及其他所有devs提交的提交,即该分支没有明确的祖先。

似乎不可能仅退回该分支的更改,因为它在几个月(对于该分支,整个项目为一年或2年)中已定期合并到该分支中。我尝试了通常的方法来还原合并和提交等。由于它已经被推到原点,所以无法重置。

在这种情况下是否可以撤消合并?

1 个答案:

答案 0 :(得分:0)

如果允许您(特别地)重写master上的历史记录,并且还没有其他合并到master中,那么您可以考虑:

ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
ssl_ctx.load_cert_chain("../server.crt", "../server.key")
ssl_ctx.load_verify_locations("../ca.crt")
ssl_ctx.verify_mode = ssl.CERT_REQUIRED
https_server = tornado.httpserver.HTTPServer(app, ssl_options=ssl_ctx)

注意::这会重写git checkout master git reset --hard HEAD~ git push -f origin master 的历史记录,因此您的所有开发人员都需要刷新(master)并确保他们不会将旧代码合并回master。

注意:您可以在错误合并之前用提交引用替换HEAD〜。所有开始错误合并提交的提交都将被删除。确保保留引用(分支,...),以免丢失工作。

相关问题