您处于分离的 HEAD 状态,这意味着您处于与此类似的状态,其中 HEAD 没有指向任何引用:
A <--master
|
B <--HEAD
|
C
然后您添加了一些文件并提交了它们,如下所示:
touch new_file.txt
git add new_file.txt
git commit -m "your detached HEAD commit"
那时,你的树是这样的:
master --> A
| D <--HEAD
| |
B /
|
C
由于 D 没有指向分支或其他引用(您被“分离”),当您再次签出 master 时,git 无法引用 D,因此它“丢失”了:
A <--master (HEAD)
|
B
|
C
要查找 D,请使用 git reflog 并查找如下内容:
0abce (HEAD -> master) HEAD@{0}: checkout: moving from b214e to master
b214e HEAD@{1}: commit: your detached HEAD commit
be14e 是您要查找的提交的名称,因此git checkout be14e 可以再次获取此文件(您也可以将文件直接git checkout 导入主文件,但这是另一回事):
master --> A
| D <--HEAD
| |
B /
|
C
现在您可以查看丢失的文件。此时您可能应该创建一个分支,以便在切换分支时您的文件不再丢失。所以请git checkout -b new_branch 得到这个:
master --> A
| D <--new_branch (HEAD)
| |
B /
|
C