所以我做了一个当地的承诺,去睡觉了。第二天,我的最后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 reflog
,git reflog HEAD
或git 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-found
和checkout
恢复我的提交(在尝试所有其他提交后)。
发生什么事了?我怎么调查这个? (我保留了一份有关当地仓库的副本进行调查!)
答案 0 :(得分:1)
听起来你可能已经处于分离的HEAD状态。试试git reflog master
。如果您的提交不存在,但它们位于git reflog HEAD
,那么这是一个非常好的指示。
分离的HEAD表示您检出了提交,但没有检出本地分支。因此,您执行的任何提交只会由HEAD引用。在您重置或签出其他分支之前,这很好。在这一点上,你唯一的办法是转到你的reflog,默认情况下,这将保留最多30天的未提交的提交。
一般情况下,建议不要使用分离的HEAD。