我想撤消我的git pull,原因是远程源上的有害提交,但是我不知道我必须重置回哪个修订版。
在git拉远端之前,如何才能回到状态?
undo
提交按钮和复选框,可轻松,清晰地暂存和取消暂存文件。GUI也是人!
我想撤消我的git pull,原因是远程源上的有害提交,但是我不知道我必须重置回哪个修订版。
在git拉远端之前,如何才能回到状态?
undo
提交按钮和复选框,可轻松,清晰地暂存和取消暂存文件。GUI也是人!
Answers:
或者使其比其他答案更明确:
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的最后一个值)
man git-rev-parse
对此进行描述。HEAD@{1}
是象征性的先前值HEAD
中reflog
而HEAD^
在所述(第一)父修改的电流HEAD
。这两个点需要相等(例如,在重新设置基准,硬重置,分支开关等之后)。请阅读链接文章以获得reflog。干杯
git reset HEAD@`{1`}
git reflog show
应该向您显示HEAD的历史。您可以使用它来确定您在之前的位置pull
。然后你可以reset
你HEAD
该犯。
pull
先采取行动怎么办?如果pull
位于HEAD@{1}
,并且之前没有其他内容,您如何还原到之前的状态?
这对我有用。
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#>
<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 fetch upstream
,然后快速看一下git diff upstream/branch
要合并的内容。如果一切顺利,请继续进行git merge upstream/branch