我这里有一个情况,另一个协作者提交了两个看起来是错误文件的提交。我是存储库的所有者,想要撤销这两个其他协作者提交的提交。我在终端尝试了以下内容。
git log -2
,它只显示了我最后做的两个提交。我想知道如何重置最后两个提交,并将 HEAD 更改为那两个提交之前的提交。
我这里有一个情况,另一个协作者提交了两个看起来是错误文件的提交。我是存储库的所有者,想要撤销这两个其他协作者提交的提交。我在终端尝试了以下内容。
git log -2
,它只显示了我最后做的两个提交。我想知道如何重置最后两个提交,并将 HEAD 更改为那两个提交之前的提交。
git revert
撤消提交:git revert A^..B
其中A
是要回滚的两个提交中第一个提交的哈希值,B
是第二个提交的哈希值。即使在这两个提交之后有其他提交被推送到远程分支,这种方法仍然有效。
如果该分支没有与他人共享,还可以使用以下命令:
git reset --hard HEAD~2
但是要注意,在共享分支上使用 git reset --hard
是有风险的。对于共享分支,更安全的做法是如上所述使用 git revert
。
A
是一个较早的提交,B
是一个较新的提交,对吗?只是确保我理解正确顺序 =) - user3405291git reset
,然后呢?如果我执行 git log
,我仍然可以看到那些提交。 - WhatTheWhat尝试这个,但一定要确定你想做什么
git reset --hard HEAD~2
git reset --hard
是一个不可逆转的操作。同时,现在也是学习 git reset --hard/--soft/--mixed
的好时机。
我还建议通过this进行查看
将它重置到两个提交之前的提交哈希值:
git reset <commit-hash>
这将删除commit-hash
之后的提交并将更改带到您的工作区。如果您不想要这些更改,可以传递--hard
选项。