我想撤消我的git拉的帐户上不需要的提交远程原点,但我不知道我必须重置回哪个修订。
我怎么能回到git拉远端原点之前的状态呢?
git reflog show应该显示HEAD的历史。你可以用它来找出你在pull之前的位置。然后你可以reset你的HEAD到那个提交。
git reflog show
pull
reset
HEAD
或者让它比另一个答案更明确:
git pull
哎呦?
git reset --keep HEAD@{1}
1.7.1以上版本的git没有--keep。如果你使用这样的版本,你可以使用--hard -但这是一个危险的操作,因为它会丢失任何局部更改。
--keep
--hard
到评论者
ORIG_HEAD是HEAD的先前状态,由可能有危险行为的命令设置,以便于恢复它们。现在Git有reflog: HEAD@{1}大致相当于ORIG_HEAD (HEAD@{1}总是HEAD的最后一个值,ORIG_HEAD是危险操作前HEAD的最后一个值)
找到你想要提交的<SHA#>。你可以在github中找到它,或者在命令行中键入git log或git reflog show,然后执行 git reset --hard <SHA#> < / p >
<SHA#>
git log
git reset --hard <SHA#>
这对我很管用。
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以获取更多信息。
从https://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) < p >即使 您可以在工作树中进行局部修改,这是安全的 当你知道另一个分支的变化发生时,就说git pull 检查合并结果后,您可能会发现更改 在另一个分支是不令人满意的。运行git reset --hard ORIG_HEAD 会让你回到你曾经的地方,但它会丢弃吗 你的局部变化,这是你不想要的。git reset --merge保持
撤销一个合并或拉入一个肮脏的工作树
$ git pull (1) Auto-merging nitfol Merge made by recursive. nitfol | 20 +++++---- ... $ git reset --merge ORIG_HEAD (2)
检查合并结果后,您可能会发现更改 在另一个分支是不令人满意的。运行git reset --hard ORIG_HEAD 会让你回到你曾经的地方,但它会丢弃吗 你的局部变化,这是你不想要的。git reset --merge保持
git reset --merge
另见https://stackoverflow.com/a/30345382/621690
即使上面的解决方案确实有效,这个答案是为你,以防你想反转时钟,而不是撤销一个git拉。我的意思是,如果你想以X Mins的方式获得确切的回购,那么运行这个命令
X
git reset --hard branchName@{"X Minutes ago"}
注意:在实际执行此命令之前,请仅在确定要返回的时间和我的情况下尝试此命令。
我目前在分支develop上,我应该签出到一个新分支并拉入另一个分支,让我们说分支A,但我不小心运行
develop
A
所以要撤消这个更改,我尝试了这个命令
git reset --hard develop@{"10 Minutes ago"}
如果你在windows cmd并得到错误:未知开关
试着像这样加引号
git reset --hard 'develop@{"10 Minutes ago"}'
重置主分支:
git reset --hard origin/master
来撤销git拉
git reset --hard HEAD^
将本地回购恢复到以前的提交状态。 如果git pull的结果是下载了任何新文件,它们将被列为未跟踪文件,您可以使用
git clean -fd