最后7个Git提交消失了,头部向后移动了

时间:2014-12-31 10:09:49

标签: git git-commit

所以我做了一个当地的承诺,去睡觉了。第二天,我的最后7次提交消失了。发生了什么事?

我能够恢复提交,但我真的想了解发生了什么。这是git第一次出现这种恐慌。

Git repo部分日志:

* 51a1ea1 A Trace-base...
* fe62749 (fixingMess) Implemented...    # <- I has here
* 498792a Finishing proposal
* 847fa4b Adding definition...
* d2ec4a6 Finishing related work
* 7c7c48a Completing proposal...
* f34274f Removed excessibe...
* d9ccd63 Chaning figs to subfigs.
* d1561db Refomulated proposal     # <- Then, it jumped here
* 9e0698b Adding student automatic...
* 46a9cb1 Adding citations...
* b3e2614 Correcting references
* 078ae5f Added Proposal
* f717235 Updating ignore file
* b10811d Cosmetics.

我查看了我的命令历史并没有发现任何东西,虽然我当时改变了炮弹并且丢失了一些历史。这就是我所拥有的:

git status
git commit -am "Finishing related work"
git status
git commit add -am "Adding definition..."
git commit com -am "Adding definition..."
git commit -am "Adding definition..."
git push
git status
git commit -am "Finishing proposal"
git push

(缺少命令)

458  git status
459  git add paper.tex
460  git commit -am "Implemented..."
504  git status

某些命令在损坏本地仓库时运行。

当我git status时,我收到以下消息。

  

您的分支机构与'origin / master'保持同步。

git refloggit reflog HEADgit reflog master的结果:

 d1561db HEAD@{0}: commit: Refomulated proposal
 9e0698b HEAD@{1}: pull: Fast-forward
 b3e2614 HEAD@{2}: pull: Fast-forward
 2f0d4fb HEAD@{3}: pull: Fast-forward
 3a0bef4 HEAD@{4}: pull: Fast-forward
 d7b0ddf HEAD@{5}: pull: Fast-forward
 d96f7ae HEAD@{6}: clone: from gitolite@XXXXXXXXX:graph-moocs

cat .git/HEAD的结果:     ref:refs / heads / master

'git branch'的结果:     *主人

我做了一个新克隆,最后6个提交出现在新文件夹中。我没有将最后一次提交推送到远程服务器,因此遥控器很好。

我能够使用git fsck --lost-foundcheckout恢复我的提交(在尝试所有其他提交后)。

发生什么事了?我怎么调查这个? (我保留了一份有关当地仓库的副本进行调查!)

1 个答案:

答案 0 :(得分:1)

听起来你可能已经处于分离的HEAD状态。试试git reflog master。如果您的提交不存在,但它们位于git reflog HEAD,那么这是一个非常好的指示。

分离的HEAD表示您检出了提交,但没有检出本地分支。因此,您执行的任何提交只会由HEAD引用。在您重置或签出其他分支之前,这很好。在这一点上,你唯一的办法是转到你的reflog,默认情况下,这将保留最多30天的未提交的提交。

一般情况下,建议不要使用分离的HEAD。