微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以选择在交互式基础库中还原提交?

如何解决是否可以选择在交互式基础库中还原提交?

我们的git分支管道是

dev -> test -> uat -> master

其中testuatmaster是受保护的分支。

我在合并之前完成了一些错误的合并。我想还原它们。我尝试使用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 举报,一经查实,本站将立刻删除。