如何在git中撤消结帐?

Yuv*_*rmi 119 git

我刚刚从我当地的git repo检查了一个早先的提交.我没有对它做任何改动,我只是看着它.现在我想回到我最近的提交 - 我该怎么做?

我用来检查的确切命令:

git checkout e5dff6b3c5d704f9b598de46551355d18235ac08
Run Code Online (Sandbox Code Playgroud)

现在,当我输入git log时,在顶部我看到这个签出提交,但我的后来都没有提交.我不小心删除了那些?

Amb*_*ber 169

先试试这个:

git checkout master
Run Code Online (Sandbox Code Playgroud)

(如果你在不同的分支上master,请改用分支名称.)

如果这不起作用,试试......

对于单个文件:

git checkout HEAD /path/to/file
Run Code Online (Sandbox Code Playgroud)

对于整个存储库工作副本:

git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,那么你可以查看reflog以找到你的旧头部SHA并重置为:

git reflog
git reset --hard <sha from reflog>
Run Code Online (Sandbox Code Playgroud)

HEAD 是一个始终指向当前分支中最新提交的名称.


Gay*_*son 47

撤消git checkoutdo git checkout -,类似于shell cdcd -shell.

  • 我甚至不知道`cd -`命令.谢谢! (15认同)
  • 您的意思是不带参数地强调“git checkout”吗?`git checkout -` 给出错误。 (2认同)
  • `git checkout -- .` 对我来说效果更好。 (2认同)

wup*_*tah 15

你可能想要git checkout master,或者git checkout [branchname].


小智 5

如果您使用 github,默认分支的名称很可能不再是master。尝试git checkout main一下。

  • 这可能与今天阅读本文的人非常相关。我不明白为什么线死灵法师的名声这么差。仅仅因为这篇文章很旧并不意味着没有人会再读它。如果确实如此,那么保留这些老问题还有什么意义呢? (6认同)