所以我做了一个本地提交,上床睡觉。第二天,我最近的 7 次提交消失了。发生了什么事?
我能够恢复提交,但我真的很想了解发生了什么。这是 git 第一次发出这样的恐慌。
Git 存储库部分日志:
* 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
时,我会收到以下消息。
您的分支是最新的"源/主"。
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
结果: 参考: 参考/头/大师
"git 分支"的结果: *主人
我做了一个新的克隆,最后 6 个提交出现在新文件夹中。我没有将最后一次提交推送到远程服务器,所以远程很好。
我能够用git fsck --lost-found
恢复我的提交并checkout
一个悬而未决的提交(在尝试了所有其他提交之后)。
发生了什么事?我该如何调查?(我保留了一份有缺陷的本地回购的副本以供调查!
听起来你可能在分离的 HEAD 状态下提交。试试git reflog master
.如果您的提交不存在,但它们在 git reflog HEAD
,这是一个很好的指示。
分离的 HEAD 意味着您签出了提交,而不是本地分支。因此,您所做的任何提交都将仅由 HEAD 引用。在您重置或签出其他分支之前,这很好。此时,您唯一的办法是转到您的 reflog,默认情况下,它将保留未引用的提交长达 30 天。
通常,不建议使用分离的HEAD。