如何解决是否可以选择在交互式基础库中还原提交?
我们的git分支管道是
dev -> test -> uat -> master
其中test
,uat
和master
是受保护的分支。
我在合并之前完成了一些错误的合并。我想还原它们。我尝试使用rebase而不是restore,因为我无法在n
上找到HEAD~{n}
,直到可以还原所有提交和合并。
git revert HEAD~n
因此,我尝试进行重做。我找到了对发展的良好承诺,直到一切正常。我用过
git rebase -i good_commit_sha
我看到所有提交的列表(大多数是错误的),我将所有提交都删除了,然后选择2个是好的。但是,当我看到合并请求时,我只会(自然地)看到我选择的请求。因此,我意识到我想还原而不是删除。有可能吗?
我知道这不是一个好习惯,但可以接受建议,我确实认为这是一种常见的情况。
解决方法
我在合并之前完成了一些错误的合并。我想还原它们。 我尝试使用rebase而不是restore,因为我找不到
n
中的HEAD~{n}
,直到我可以还原所有提交和合并。
git revert HEAD~n
这是您的实际问题,我们将尝试为此提供解决方案。
要在合并后恢复git,您必须指定一些选项,如docs中所述和this answer中所述。您必须指定要恢复到的合并的一侧,否则该语句将变得模棱两可。莱纳斯本人的tutorial应该会有所帮助。
您的语法应为以下内容:
git revert -m 1 <SHA of the commit to revert to>
请记住,-m
从1开始计数,您可能想在本地进行一些运行,然后提交并推动“好”的运行。
一个值得记住的好短语:Rebase locally,merge remotely
表示只要尚未推送,就可以随意使用(交互式)变基并修复您需要的所有内容。这可能涉及删除提交,压缩提交,无论如何有助于理解提交历史。
一旦被推送,您就应该使用merge
,因为否则您将不得不稍后强制推送您的基础变更,您应该避免使用,因为有人可能已经检查了您要变更的内容(交谈关于提交历史)。
话虽这么说,您的做法是一种可能性。稍后恢复错误的提交是您可以采取的另一种方法。
期望错误的提交已经在您的远程上,后一种方法应该是首选。
我设法从另一个问题上找到了答案。 (查找链接)
git reset --hard good_ocmmit_sha
HEAD现在处于good_ocmmit_sha修复单元测试中
git reset --soft @{1}
git commit -m "Reverted to stable"
[revert_branch]恢复为稳定
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。