撤消git拉,如何将回购旧状态

有什么办法可以恢复或撤消git pull,这样我的源代码/回购将会在执行git pull之前进入旧状态? 我想这样做是因为它合并了一些我不想这样做的文件,但只合并其他剩余的文件。 所以,我想让这些文件回来,这可能吗? 谢谢 :)

编辑我想撤消混帐澄清。 看到一些答案后,我做到了

git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...

现在,我该怎么办? 做git reset --hard好的? 我不想再拧它,所以要求详细的步骤?


git pull会做两件事:它执行一个git fetch ,然后是一个git merge ,它会合并已经设置为在你的配置中合并的分支。

所以你想要做的就是撤消合并(撤消抓取并没有多大意义,也不需要)。

要做到这一点,你可以尝试使用git reset --hard重置到以前的状态。 使用git-reflog命令查找先前状态的SHA-1,然后重置为它。

警告git reset --hard会删除所有未提交的更改。


和jkp的答案一样,但是下面是完整的命令:

git reset --hard a0d3fe6

其中a0d3fe6是通过做

git reflog

并看看你想撤消的点。


更现代的撤销合并的方式是:

git merge --abort

稍微老一点的方式:

git reset --merge

在以前的答案中描述的老派方式(警告:将放弃所有本地更改):

git reset --hard

但实际上,值得注意的是, git merge --abort只相当于git reset --merge因为MERGE_HEAD存在。 这可以在合并命令的git帮助中读取。

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

合并失败后,当没有MERGE_HEAD ,失败的合并可以通过git reset --merge来取消,但不一定要用git merge --abort所以它们不仅是同一事物的新旧语法 。 这就是为什么我发现git reset --merge在日常工作中更有用。

链接地址: http://www.djcxy.com/p/2767.html

上一篇: Undo git pull, how to bring repos to old state

下一篇: What are the practical consequences of rewriting GIT history?