【发布时间】:2010-11-16 10:31:53
【问题描述】:
有什么方法可以恢复或撤消 git pull 以便我的源/存储库恢复到执行 git pull 之前的旧状态? 我想这样做是因为它合并了一些我不想这样做的文件,但只合并了其他剩余的文件。那么,我想取回那些文件,这可能吗?
编辑:我想撤消 git merge 以进行澄清。 看到一些答案后,我这样做了
git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...
现在,我该怎么办?做git reset --hard 可以吗?我不想再搞砸了,所以要求详细的步骤?
【问题讨论】:
-
您的历史记录中似乎只有两件事:克隆和提取。只需重置为克隆:
git reset --hard 01b34fa,在这种情况下,您可以完成git reset --hard HEAD^,它将重置为 HEAD 之前的一次提交。 -
--hard 如果你想修改你工作目录中的文件
-
@seg.server.fault:如果它有效,你总是可以接受答案;)
-
git reset --hard HEAD^
-
git reflog将显示 git 所做的一切。有人担心git reset --hard [sha1 of something from reflog]会还原reflog中显示的所有内容,这有时不是目标,例如。您想恢复从原始数据提取的主分支上的合并(发生),并且在合并之后您已经在其他分支上工作。reflog将显示其他分支上的每个 chage。但git checkout master和git reset --hard [SH1 of commit on master branch just before merge]将仅重置当前主分支,从原点移除拉合并。
标签: git version-control git-merge