由于远程源上不需要的提交,我想撤消我的 git pull,但我不知道我必须重置回哪个版本。
我怎样才能回到远程源上的 git pull 之前的状态?
或者让它比其他答案更明确:
git pull
哎呀?
git reset --keep HEAD@{1}
早于 1.7.1 的 git 版本没有--keep
. 如果你使用这样的版本,你可以使用--hard
- 但这是一个危险的操作,因为它会丢失任何本地更改。
ORIG_HEAD 是 HEAD 的先前状态,由可能具有危险行为的命令设置,以便于恢复它们。现在 Git 有 reflog 用处不大:HEAD@{1} 大致相当于 ORIG_HEAD(HEAD@{1} 始终是 HEAD 的最后一个值,ORIG_HEAD 是危险操作之前 HEAD 的最后一个值)
git reflog show
应该向您展示 HEAD 的历史。您可以使用它来确定您在pull
. 然后你就可以reset
提交HEAD
了。
这对我有用。
git reset --hard ORIG_HEAD
撤消合并或拉取:
$ git pull (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard (2)
$ git pull . topic/branch (3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD (4)
查看此:Git 中的 HEAD 和 ORIG_HEAD了解更多信息。
找到<SHA#>
你想要去的提交。您可以在 github 中找到它,git log
或者在命令行中输入 或git reflog show
然后执行
git reset --hard <SHA#>
撤消合并或拉入脏工作树
$ git pull (1) Auto-merging nitfol Merge made by recursive. nitfol | 20 +++++---- ... $ git reset --merge ORIG_HEAD (2)
即使您的工作树中可能有本地修改,
git pull
当您知道另一个分支中的更改不与它们重叠时,您也可以放心地说。查看合并的结果后,您可能会发现另一个分支中的更改并不令人满意。运行
git reset --hard ORIG_HEAD
会让你回到原来的位置,但它会丢弃你不想要的本地更改。git reset --merge
保留您的本地更改。
撤消git pull
git reset --hard HEAD^
将您的本地仓库带回之前的提交状态。如果由于 git pull 下载了任何新文件,它们将被列为未跟踪文件,您可以使用清理它们
git clean -fd
即使上述解决方案确实有效,这个答案也是为你准备的,以防你想倒转时钟而不是撤消 git pull。我的意思是,如果你想以X
Mins 的方式获得你的确切回购然后运行命令
git reset --hard branchName@{"X Minutes ago"}
注意:在您实际继续运行此命令之前,请仅在您确定要返回的时间以及关于我的情况的情况下尝试此命令。
我目前在一个分支上develop
,我应该结帐到一个新的分支并拉入另一个分支,比如说分支,A
但我在结帐前不小心跑
git pull origin A
了。
所以要撤消此更改,我尝试了此命令
git reset --hard develop@{"10 Minutes ago"}
如果您在 Windows cmd 上并出现错误:未知开关 `e
尝试添加这样的引号
git reset --hard 'develop@{"10 Minutes ago"}'
重置主分支:
git reset --hard origin/master