我在版本分支V4.15.0
中工作,在我做了一些应该转到master
分支的小改动后,我提交并推送。
什么是恢复这个错误的最佳方法?有没有办法可以将提交从V4.15.0
移到master
,而不必删除提交?
答案 0 :(得分:2)
首先我们需要修复V4.15.0分支。有两种可能的方法。
git revert
是最简单的方法。当给定单个提交ID时,revert
将创建其反向作为历史记录中的新提交。
git checkout V4.15.0
git revert HEAD
如果您不希望历史记录显示错误,则必须使用push --force
重置历史记录。请注意it is usually a bad practice重写非用户分支中的历史记录,并且由于这个原因,某些存储库管理器从不允许--force
。但在您的情况下可能会接受,请使用您的工作流程政策进行验证。
# checkout the original V4.15.0 branch
git checkout commit_before_mistake_V4.15.0
# we are now detached from HEAD, so checkout a new branch
git checkout -b fixed_branch
# force push, this rewrites history
git push fixed_branch:V4.15.0 --force
现在我们必须将提交移动到主分支。
幸运的是,使用上述两种方法中的任何一种都不会删除错误的提交。记住它的id,你可以使用git cherry-pick id
将该提交添加到任何其他分支。
git checkout master
git cherry-pick id