这是撤消git东西的好策略吗?

时间:2013-01-08 21:39:04

标签: git revert git-reset git-revert

到现在为止,如果我曾经提交并将错误推送到主分支,我的解决方法是,假设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

这种推理是正确的还是我仍然缺少基本概念。

由于

3 个答案:

答案 0 :(得分:5)

此工作流程解释了您需要了解的所有内容。它是一个很好的资源恕我直言。

Git Mess Workflow

答案 1 :(得分:2)

是的 - 在这种情况下,git revert绝对是合适的方法,因为它保留了错误提交的历史记录,然后被删除。

答案 2 :(得分:1)

通常对于“正在进行的工作”,我将进行一系列提交,然后执行git rebase -i base来清理我的历史记录 - 考虑到读者(可能是您自己)会在以后更容易看到未来。

一旦我推动它,我会认为历史是不可变的,然后会更喜欢git revert方法。