我想撤消我的git拉的帐户上不需要的提交远程原点,但我不知道我必须重置回哪个修订。

我怎么能回到git拉远端原点之前的状态呢?


当前回答

即使上面的解决方案确实有效,这个答案是为你,以防你想反转时钟,而不是撤销一个git拉。我的意思是,如果你想要得到你的确切回购的方式是X分钟,然后运行这个命令

git reset -hard branchName@{"X Minutes ago"}

注意:在实际执行此命令之前,请仅在确定要返回的时间和我的情况下尝试此命令。

我目前在一个分支开发,我应该签出到一个新的分支,并拉入另一个分支,让我们说分支a,但我不小心运行 git在退房前拉出原点A。

所以要撤消这个更改,我尝试了这个命令

git reset -hard development @{"10分钟前"}

如果你在Windows CMD并得到错误:未知开关e

试着像这样加引号

git重置-hard ' development @{"10分钟前"}'

其他回答

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

即使上面的解决方案确实有效,这个答案是为你,以防你想反转时钟,而不是撤销一个git拉。我的意思是,如果你想要得到你的确切回购的方式是X分钟,然后运行这个命令

git reset -hard branchName@{"X Minutes ago"}

注意:在实际执行此命令之前,请仅在确定要返回的时间和我的情况下尝试此命令。

我目前在一个分支开发,我应该签出到一个新的分支,并拉入另一个分支,让我们说分支a,但我不小心运行 git在退房前拉出原点A。

所以要撤消这个更改,我尝试了这个命令

git reset -hard development @{"10分钟前"}

如果你在Windows CMD并得到错误:未知开关e

试着像这样加引号

git重置-hard ' development @{"10分钟前"}'

撤销git拉取

git reset --hard HEAD^

将本地回购恢复到以前的提交状态。(注意:HEAD^表示当前分支顶端的第一个直接父结点。HEAD^是HEAD^1的缩写,如果你想,你也可以进一步往上(例如HEAD^2, HEAD^3…) 重置后,如果留下一些未知文件(由于原始git拉取而到达的文件),它们将被列为未跟踪文件,您可以使用

  git clean -fd

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

git pull 

哎呦?

git reset --keep HEAD@{1}

1.7.1以上版本的git没有——keep。如果您使用这样的版本,您可以使用—很难—但这是一个危险的操作,因为它会丢失任何本地更改。


致评论者

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

git reflog show将显示HEAD的历史。你可以用这个查出你被拉之前在哪里。然后你可以重置你的HEAD到那个提交。