从错误的GitHub仓库撤销拉取操作

5

我刚刚从github上拉取了代码,但是我错误地将错误的github仓库拉到了我的项目中。请问如何撤销这个操作?

谢谢!

3个回答

3

一个实现这个目标的方法是

$ git reset --hard latest-good-commit-hash

使用git log --all(或更直观的方式,使用gitk --all)来查看提交历史记录。


3
尝试使用git reflog。Reflog可以撤消几乎任何操作。 类似这样的内容。
git reset --hard HEAD@{1}

然而,如果您的工作副本不干净,它将擦除所有更改,请注意。


谢谢!我已经添加并提交了,但还没有推送。现在添加和提交的内容不会被覆盖,对吧? - Barka
没错,如果你已经添加并提交了,那么你所添加和提交的内容在此之后仍将存在。 - Mike Morearty
@user277498,在执行“reset”之前,请查看“git reflog”的输出。它包含了关于“@{1}”后缀的信息,没有任何魔法 :) - Piotr Findeisen

3
git reset --hard HEAD^

这个命令将重置你的分支到上一次提交,也就是撤销合并提交之前的提交。你的工作将不会受影响。

请记住,所有已提交的内容仍然存在于松散的对象中,你可以随时使用git reflog来还原到HEAD指向的任何版本之前的版本。这就是为什么使用git经常进行提交非常重要,因为你可以轻松地撤消所有已完成的更改。


1
所有这些使用 git reset --hard _某个本地提交_ 的答案看起来让你的存储库看起来不错,但是会将错误远程存储库中的所有提交留在您的本地存储库中,因此没有一个是完全的“撤消”。 git gc 不会删除错误的提交,因为它们在您的 reflog 中(因为您最近引用了它们)。我认为它们最终会过期,但如果您想立即杀死它们,则需要进行更深入的手术。 - skierpage
1
@skierpage 正确。提交仍然存在,悬空着,直到你将它们清理干净。有各种方法可以做到这一点。最简单的方法是重新克隆存储库(假设您可以放弃当前使用的存储库)。 - ralphtheninja

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