如何在Git上撤销最近的两次提交

14

我这里有一个情况,另一个协作者提交了两个看起来是错误文件的提交。我是存储库的所有者,想要撤销这两个其他协作者提交的提交。我在终端尝试了以下内容。

git log -2,它只显示了我最后做的两个提交。我想知道如何重置最后两个提交,并将 HEAD 更改为那两个提交之前的提交。


可能是如何在Git中撤消最后一次提交?的重复问题。 - Ebrahim Poursadeqi
3个回答

34
使用 git revert 撤消提交:
git revert A^..B

其中A是要回滚的两个提交中第一个提交的哈希值,B是第二个提交的哈希值。即使在这两个提交之后有其他提交被推送到远程分支,这种方法仍然有效。

如果该分支没有与他人共享,还可以使用以下命令:

git reset --hard HEAD~2

但是要注意,在共享分支上使用 git reset --hard 是有风险的。对于共享分支,更安全的做法是如上所述使用 git revert


2
A^ 应该被提交哈希值所替换? - Ramji Seetharaman
1
@RaMaJ 是的,请将“ A”和“ B”替换为第一次提交和第二次提交的提交哈希值。 - Tim Biegeleisen
5
A 是一个较早的提交,B 是一个较新的提交,对吗?只是确保我理解正确顺序 =) - user3405291
我使用了 git reset,然后呢?如果我执行 git log,我仍然可以看到那些提交。 - WhatTheWhat
是的,添加了一个还原提交,它可以撤销这两个提交的差异。 - almereyda

10

尝试这个,但一定要确定你想做什么

git reset --hard HEAD~2

git reset --hard 是一个不可逆转的操作。同时,现在也是学习 git reset --hard/--soft/--mixed 的好时机。

enter image description here

我还建议通过this进行查看


6

将它重置到两个提交之前的提交哈希值:

git reset <commit-hash>

这将删除commit-hash之后的提交并将更改带到您的工作区。如果您不想要这些更改,可以传递--hard选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接