我想撤消我的git pull因远程源上的不需要的提交,但我不知道我必须重置为哪个版本。
在对远程原点进行git拉取之前,我怎样才能回到状态?
或者使其比其他答案更明确:
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)
结帐:HEAD and ORIG_HEAD in Git了解更多。
找到你要去的提交的<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
保留您当地的变化。