【发布时间】:2016-08-01 16:07:59
【问题描述】:
我在版本分支V4.15.0 工作,在我做了一些应该转到master 分支的小改动之后,我提交并推送。
纠正这个错误的最佳方法是什么?有没有办法可以将提交从V4.15.0 移动到master,而无需删除提交?
【问题讨论】:
标签: git
我在版本分支V4.15.0 工作,在我做了一些应该转到master 分支的小改动之后,我提交并推送。
纠正这个错误的最佳方法是什么?有没有办法可以将提交从V4.15.0 移动到master,而无需删除提交?
【问题讨论】:
标签: git
首先我们需要修复 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
【讨论】:
您需要做两件事。首先,在您不希望提交的分支上恢复提交。其次,挑选你想要的提交到正确的分支。
摘樱桃快乐!
【讨论】: