我是一个 git 新手,我正在尝试了解如何撤消 git 中的更改。假设我有两个分支
1:大师
2: 工作
我在工作分支工作,我想从工作分支的队友那里 pull 最新的更改,所以我应该下达命令
git pull origin work
相反,我给出了命令
git pull origin master
它从 master 分支获取一堆提交。现在,我想撤消最后一次 pull (假设没有本地未提交的更改),这个命令是否足够
git reset --hard HEAD~1
上面的命令能完成撤销 git pull 吗?是否存在可能无法正常工作的情况?
编辑
阅读答案后,HEAD~1 和 ORIG-HEAD 在 pull/merge 后是否引用同一个提交?
最佳答案
首先,git reset
没有使用--head
选项,我想你的意思是--hard
。其次,不,这还不够,因为 git reset --head HEAD~1
会将您的存储库恢复到上次提交的状态。如果 git pull
导致许多新的提交,这还不够。你需要做的:
$ git reset --hard ORIG_HEAD
之所以有效,是因为在执行 merge 、 rebase 和其他潜在危险操作之前,Git
设置了一个名为 ORIG_HEAD
的特殊引用,它等于当前的 SHA1
HEAD 在此操作之前。下次在执行 git pull
之前注意当前 HEAD
的 SHA1
并在 git pull
之后看到你自己 ORIG_HEAD
指向前一个HEAD
:
$ cat .git/ORIG_HEAD
关于git - 'git reset --hard Head~1' 是否足以撤消 git pull?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31701130/