git - Git 存储库不工作(git 不断删除 HEAD 文件)
问题描述
我的 git 存储库突然损坏了(可能是在使用 repo 中的一些文件更新 Sublime 之后仍然打开)。当我尝试显示 git 状态时,我收到了以下错误消息:
fatal: not a git repository (or any of the parent directories): .git
当我查看 .git 文件夹时,发现 HEAD 文件丢失了。我尝试使用命令重新创建文件
echo 'ref: refs/heads/master' > ../.git/HEAD
但什么也没发生,所以我尝试手动创建文件,但它被重命名为 HEAD (VAVRIK-PC's conflicted copy 2021-05-27)。后来我尝试断开我的电脑与互联网的连接(我的 repo 链接到 GitHub)并重复前面的步骤。这次我设法重新创建了 HEAD 文件并暂存了一些更改以进行提交,但是当我尝试提交更改时,我收到以下错误消息:
error: invalid object 100644 91e213ecdea4b589613a7cd7dc078bc501bc039d for 'cascade_flux/.gitignore'
error: invalid object 100644 91e213ecdea4b589613a7cd7dc078bc501bc039d for 'cascade_flux/.gitignore'
error: Error building trees
再次打开 Wi-Fi 后,HEAD 文件消失了。有什么办法可以解决这个问题吗?
解决方案
在某种程度上,您在这里很幸运:当 Dropbox 损坏 Git 存储库时,损坏有时是不可见的,直到您已经无法恢复地丢失了一些工作。
一般来说,Git 需要完全控制其数据库(在.git
目录中)。切勿将它们放在共享空间中,无论是使用 Dropbox、iCloud 还是任何其他文件同步软件。在某些非常特殊的情况下,当您知道自己在做什么并且确定 Git 没有修改目录中的内容时,可以通过某种网络或其他复制软件复制目录。但是 Git 对这些东西在自动解决冲突更改时所做的更改类型过于敏感,因此共享软件太容易弄乱 Git 数据库。
推荐阅读
- java - 即使在 HotSpot 中没有带有 CMS 的 Full GC 的情况下,Old Generation 的大小如何减小?
- solr - 如何在 Hybris 的 Solr 更新中跳过坏文档
- grafana - InfluxDB 时间落后 15 分钟
- sql - 如何在Oracle中按日期分组和排序?
- c - 为什么我得到 SIGABRT?
- amazon-web-services - 清理 AWS CodePipeline 中的旧文件
- algorithm - 快速排序代码之间的区别
- javascript - 如何用一个按钮检查特定表格中的所有复选框
- amazon-web-services - 如何增加 AWS-S3 存储中的执行超时
- webrtc - 属性标记的 SDP 值中的“:”或“/”本身是否允许在它们周围有空格?