如何撤销git拉取?

w7t8yxp5  于 2023-02-02  发布在  Git
关注(0)|答案(8)|浏览(789)

我想撤销我的git pull操作,因为在远程源上有不想要的提交,但是我不知道应该重置回哪个版本。
我怎么能回到git拉取远程源之前的状态呢?

ruarlubt

ruarlubt1#

或者比另一个答案更明确:

git pull

哎呀?

git reset --keep HEAD@{1}

git 1.7.1之前的版本没有--keep,如果你使用这样的版本,你可以使用--hard--但这是一个危险的操作,因为它会丢失所有本地更改。

致评论者

ORIG_HEAD是HEAD的前一个状态,由可能有危险行为的命令设置,以便于恢复。现在Git有了reflog,它就不那么有用了:HEAD@{1}大致相当于ORIG_HEAD(HEAD@{1}始终是HEAD的最后一个值,ORIG_HEAD是危险操作之前HEAD的最后一个值)

92vpleto

92vpleto2#

git reflog show应该会显示HEAD的历史记录,你可以用它来找出你在pull之前的位置,然后你可以reset你的HEAD到那个提交。

yuvru6vn

yuvru6vn3#

这对我很有效。

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了解更多。

qltillow

qltillow4#

找到你要提交的<SHA#>,你可以在github中找到它,或者在命令行中输入git loggit reflog show,然后执行git reset --hard <SHA#>

9lowa7mx

9lowa7mx5#

尽管上面的解决方案确实有效,但如果你想反转时钟而不是撤销git pull,这个答案是为你准备的。我的意思是,如果你想得到你的repo,就像X Mins一样,然后运行这个命令
git reset --hard branchName@{"X Minutes ago"}
注意:在你真正开始运行这个命令之前,如果你确定你想回到的时间,请只尝试这个命令,这里是我的情况。
我目前在一个分支develop,我应该结帐到一个新的分支,并拉在另一个分支,让我们说分支A,但我不小心运行git pull origin A之前结帐。
因此,为了撤消此更改,我尝试了以下命令
git reset --hard develop@{"10 Minutes ago"}
如果你是在windows命令并得到[error: unknown switch e](https://github.com/dahlbyk/posh-git/issues/106) 尝试添加如下引号git reset --hard 'develop@{"10 Minutes ago"}'`

vsdwdz23

vsdwdz236#

撤销git pull

git reset --hard HEAD^

将本地存储库返回到以前的提交状态。(注意:HEAD^表示当前分支尖端的第一个直接父级。HEAD^是HEAD^1的缩写,如果你愿意,你也可以继续前进(例如HEAD^2,HEAD^3 ...)。重置后,如果有未知文件(原始git pull的结果),它们将被列为未跟踪文件,你可以使用

git clean -fd
bvjveswy

bvjveswy7#

来自www.example.comhttps://git-scm.com/docs/git-reset#Documentation/git-reset.txt-Undoamergeorpullinsideadirtyworkingtree
撤消脏的工作树中的合并或拉取

$ 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将保留您的本地更改。
另请参见https://stackoverflow.com/a/30345382/621690

wvmv3b1j

wvmv3b1j8#

重置主分支:

git reset --hard origin/master

相关问题