how to finish reverting a commit, and how to revert a lot of commits
这一定很简单,但我在
我为一个公共项目做了很多小的承诺,我所有的工作都很糟糕。我想把我所做的一切都删除。一些是我刚在本地承诺的,一些是我推到"原始主人"的。
第一个承诺(一周前)是
我只想把这些都带走。我试过恢复一个。
1 2 3 4 5 | git status # On branch master # You are currently reverting commit e82401b. # (all conflicts fixed: run"git revert --continue") # (use"git revert --abort" to cancel the revert operation) |
我在这里假设在您的工作之间没有其他人插话承诺,并且您的错误承诺在repo的历史中形成了一个连续的范围。否则你会变得更复杂。假设您的历史如下:
1 2 3 4 5 6 7 | e82401b - (master, HEAD) My most recent private commit ... bc2da37 - My first private commit cf3a183 - (origin/master) My most recent bad public commit ... 292acf1 - My first bad public commit 82edb2a - The last good public commit |
我们要做的第一件事就是把你还没有公开的承诺吹走。您可以使用以下命令执行此操作(请注意,您的更改将不存在,并且应被视为不可恢复):
1 | git reset --hard cf3a183 |
号
等效(且可读性更强):
1 | git reset--hard origin/master |
现在,您对存储库的视图与
您可以使用
1 | git revert --no-commit 82edb2a..HEAD |
。
或者,等价地:
1 | git revert --no-commit 292acf1^..HEAD |
记住,
运行
您可以对以前的任何提交设置回购,之后的所有更改都将被删除。
Git重置--硬
之后,使用git push——强制原点将其推到github
访问如何将Git存储库回滚(重置)到特定提交?