如何撤消git中的结帐?


134

我刚刚从本地git仓库中签出了更早的提交。我没有对其进行任何更改,我只是在查看它。现在,我想回到我的最新提交-我该怎么做?

我用来检查的确切命令:

git checkout e5dff6b3c5d704f9b598de46551355d18235ac08

现在,当我键入git log时,在顶部,我看到了这个已检出的提交,但是以后都没有。我是不是不小心删除了那些?


我认为您看到的是错误的方式:我们结帐到分支(首长),而不是单独提交
Z. Khullah

Answers:


183

首先尝试:

git checkout master

(如果您所在的分支与不在同一个分支master,请改用那里的分支名称。)

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

对于单个文件:

git checkout HEAD /path/to/file

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

git reset --hard HEAD

如果这不起作用,那么您可以在参考日志中查找旧的SHA并将其重置为:

git reflog
git reset --hard <sha from reflog>

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


但是我如何查看我的提交来决定要提供哪个SHA1哈希呢?
Yuval Karmi 2010年

1
您不需要- HEAD逐字键入。Git已经知道这HEAD意味着什么。但是,如果您确实要给它一个SHA1,则可以使用git log它查看提交日志。
琥珀色

当我运行git reset --hard HEAD它时,它使我回到已签出的提交...我将发布用于签出的确切命令。
Yuval Karmi 2010年

(如果您感到好奇,则可以键入git rev-parse HEAD并看到它为您提供了与最新提交相对应的SHA1。)
琥珀色

我在上面添加了两个新选项,请尝试使用它们(按顺序-首先尝试使用结帐版本)。
琥珀色


16

您可能想要git checkout mastergit checkout [branchname]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.