【发布时间】:2014-07-05 11:39:22
【问题描述】:
这可能令人难以置信,但当我断电时,我正在执行提交。幸运的是,我从未推送过提交。我刚刚恢复了电源,当我尝试在目录中执行 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 的建议做了:
- 克隆存储库
- 复制更改的文件并提交
- 运行
rm -f ./.git/index.lock
【问题讨论】:
-
如果您说您“从未推送过提交”,大概这意味着您有某种远程存储库,其中包含您之前的所有提交?
-
git fsck 是你想要的命令,我想。
-
这个问题可以通过给它一个更具描述性的标题来改进。目前标题很模糊。
-
@lschessinger:因此您有什么理由不能将该存储库再次克隆到新目录中吗?如果您当前拥有的实际文件很好,您应该能够将更改的文件复制并提交,并最终到达您想要的位置。
-
@lschessinger: 好吧,你可以一次性复制所有文件,当你
git commit -a时,它实际上只会提交与远程仓库中当前版本不同的文件.当您的本地存储库发生问题时,让您退出是单人项目推送到远程存储库的主要好处。
标签: git