Git提交在结束前停止了

时间:2014-05-16 21:50:15

标签: git

这可能很难相信,但是当我的电源关闭时,我正在执行提交。幸运的是,我从未推动过提交。我刚刚恢复功能,当我尝试在目录中执行git log时出现错误:

fatal: bad default revision 'HEAD'

这是一个私人存储库,我已经工作了一个多星期,并且提交了大约5到10次。

我看了SO并找到Git tracking entire home directory. Get error - fatal: bad default revision 'HEAD',这没有任何帮助,因为我已经运行了git init

我刚刚运行ls -la以查看我的.gitignore文件是否仍然存在,但是看到它已经消失了。我该怎么办?我不想失去我以前的提交历史。

我对Git的了解有限。任何帮助将不胜感激。

修改1:

我只有一个分支(主),当我尝试时:git symbolic-ref HEAD refs/heads/master它没有改变任何东西。

我还看了git log and show on a bare repo并尝试了:

git log --graph --oneline --date-order --decorate --color --all

给了我:

095cdaa (origin/master) added profile layout
dd9ddec fixed nav bar
4e99ca7 remove unecessary files, add resources, start navigation drawer
8b09709 fix README
c64c422 initial commit

然后我尝试了git branch master 095cdaa...,这给了我错误:

fatal: Failed to resolve HEAD as a valid ref.

编辑2:

作为对这个问题的快速解决方案,我做了@PaulGriffiths建议的事情:

  1. 克隆存储库
  2. 复制已更改的文件并提交
  3. 运行rm -f ./.git/index.lock

2 个答案:

答案 0 :(得分:0)

在官方的git书中查看:Git internals - Maintenance and Data Recovey

如果您的reflog仍然完好无损:

git reflog

将显示HEAD提交的最后状态列表。尝试在其中一个列出的提交上运行git checkout <hash>,然后git branch <newBranchName>

答案 1 :(得分:0)

根据 @PaulGriffiths 的建议,我通过以下方式解决了这个问题:

  1. 克隆存储库。
  2. 复制已更改的文件并提交它们。
  3. 在存储库中运行rm -f ./.git/index.lock
  4. 这个解决方案只有用,因为我有一个远程存储库,我已经做了很多提交并推送它们。如果我从未推动过这些提交,那么这将不起作用。