到现在为止,如果我曾经提交并将错误推送到主分支,我的解决方法是,假设git日志看起来像
commit bad_hash
commit another_bad_hash
commit yet_another_bad_hash
commit good_hash
我解决过去的情况是:
git reset --hard good_hash
git push -f origin master
是的,这会起作用......但似乎并不优雅,因为它有效地删除了提交历史。
所以在破坏了我的自我的情况之后,我检查了更好的方法,并且出来了git revert one,基本上我现在使用
git revert bad_hash another_bad_hash yet_another_bad_hash
git push origin master
git revert将创建三个提交(每个恢复的哈希一个),之后,需要推送来更新遥控器。
现在,问题是,这种策略是否正确?对我来说看起来比重置更好 - 硬,因为回购的历史没有中断,如果最终有人想检查为什么有问题,他们总是可以做一个
git diff bad_hash
这种推理是正确的还是我仍然缺少基本概念。
由于
答案 0 :(得分:5)
此工作流程解释了您需要了解的所有内容。它是一个很好的资源恕我直言。
答案 1 :(得分:2)
是的 - 在这种情况下,git revert
绝对是合适的方法,因为它保留了错误提交的历史记录,然后被删除。
答案 2 :(得分:1)
通常对于“正在进行的工作”,我将进行一系列提交,然后执行git rebase -i base
来清理我的历史记录 - 考虑到读者(可能是您自己)会在以后更容易看到未来。
一旦我推动它,我会认为历史是不可变的,然后会更喜欢git revert
方法。