撤消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
在日常工作中更有用。
上一篇: Undo git pull, how to bring repos to old state
下一篇: What are the practical consequences of rewriting GIT history?