这是一个撤销git东西的好策略吗?

问题描述 投票:3回答:3

到现在为止,如果我提交了一些错误的东西并推送到主分支,我的解决方法是,假设 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的方法,基本上我现在用的是

git revert bad_hash another_bad_hash yet_another_bad_hash
git push origin master

git revert会创建三个提交(每个reverted hash一个),之后,需要推送更新远程。

现在,问题是,这个策略正确吗?在我看来,这比重置--hard要好得多,因为repo的历史没有被中继,如果最终有人想检查为什么会出现问题,他们可以随时做个

git diff bad_hash

这个推理是否正确,还是我还缺少基本概念。

谢谢你

git revert git-reset git-revert
3个回答
5
投票

这个工作流程解释了你需要知道的一切。 这是一个很好的资源,我认为。

信用。Justin Hileman

Git Mess Workflow


2
投票

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


1
投票

通常对于 "进行中的工作",我会先做一系列的提交,然后再做一次 git rebase -i base 来清理我的历史--考虑到读者(可能是你自己)以后会觉得这样更容易看到。

一旦我再推敲,我就会认为那段历史是不可改变的,那么我就会更倾向于用 git revert 办法。

© www.soinside.com 2019 - 2024. All rights reserved.