我想撤消我的git pull因为远程源上的不需要的提交,但我不知道我必须重置为哪个版本。
在我对远程原点进行git pull之前,我怎样才能回到状态?
答案 0 :(得分:348)
或者使其比其他答案更明确:
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的最后一个值)
答案 1 :(得分:59)
git reflog show
应该向您展示HEAD的历史。您可以使用它来确定pull
之前的位置。然后,您可以reset
HEAD
进行该提交。
答案 2 :(得分:23)
这对我有用。
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了解更多信息。
答案 3 :(得分:15)
找到您想要提交的<SHA#>
。您可以在github中找到它,或者在命令行中键入git log
或git reflog show
,然后执行
git reset --hard <SHA#>
答案 4 :(得分:1)
撤销git pull
git reset --hard HEAD^
将您的本地存储库恢复到之前的提交状态。 如果由于 git pull 下载了任何新文件,它们将被列为未跟踪文件,您可以使用
清理它们 git clean -fd
答案 5 :(得分:0)
撤消合并或在脏的工作树中拉动
$ 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
保持 您的本地更改。
答案 6 :(得分:0)
即使上述解决方案都能奏效,但如果您想倒转时钟而不是撤消git pull,此答案将为您提供。我的意思是,如果您想像{{1}分钟后再运行命令
X
注意:在继续执行此命令之前,请仅在确定要返回的时间以及有关我的处境的前提下尝试此命令。
我目前在分支机构git reset --hard branchName@{"X Minutes ago"}
上,应该结帐到新分支并拉入另一个分支,说分支机构develop
,但我不小心跑了
A
,然后退房。
所以要撤消此更改,我尝试了此命令
git pull origin B
如果您在Windows cmd上并获得error: unknown switch `e
尝试添加这样的报价
git reset --hard develop@{"10 Minutes ago"}
答案 7 :(得分:0)
重置主分支:
git reset --hard origin/master