我有一个工作目录,它是一个git存储库。今天,我在文件夹和文件结构中进行了很多更改,并且还移动了.git
目录。现在,尝试提交这些更改,我收到以下错误:
fatal: Not a git repository (or any parent up to mount parent )
我用Google搜索了错误,发现git使用的条件来确定当前目录是否是git存储库。事实证明,我的.git
缺少一些文件和文件夹:
$ ls -la .git
total 36
drwxr-xr-x 5 oli oli 4096 Apr 6 10:51 .
drwxr-xr-x 10 oli oli 4096 Apr 6 11:05 ..
-rw-r-xr-- 1 oli oli 30 Mar 3 13:39 COMMIT_EDITMSG
-rw-r--r-- 1 oli oli 41 Mar 3 13:40 ORIG_HEAD
-rw-r--r-- 1 oli oli 6612 Mar 3 13:40 index
drwxr-xr-x 2 oli oli 4096 Jan 27 19:58 info
drwxr-xr-x 3 oli oli 4096 Jan 27 19:58 logs
drwxr-xr-x 165 oli oli 4096 Mar 3 13:40 objects
与另一个存储库相比,缺少多个对象,最重要的是HEAD
文件。我不确切知道,他们是如何迷路的(我总是移动整个目录)但问题是现在,如何恢复所有内容以便我仍然拥有提交日志并可以将我的更改提交到存储库。
答案 0 :(得分:2)
不知道这是否有效,但请尝试此操作(进行备份后)。我希望来自.git/objects
的文件不会丢失 - 否则我怀疑任何事都会有所帮助。
git init
如果它现在被识别为Git存储库但缺少某些提交,请执行以下操作:
git fsck --lost-found
.git/lost-found/commit
.git/refs/heads
目录
gitk --all
检查历史记录,并为要保存的任何内容创建分支或标记。.git/refs/heads
中删除丢失和找到的分支。然后下次记得通过推送到远程存储库或使用自动备份应用程序进行备份。 ;)