Git desktop.ini谷歌硬盘



这是我的第一个问题,我试图在论坛和谷歌上搜索答案,但遇到了障碍。

所以我把我的git文件保存在谷歌硬盘上。在创建了5个提交之后,我从git log——oneline 得到如下输出

5c1bd8f (HEAD -> master) 5th commit - robots.txt
ca656ac 4th commit - robots.txt
3850e6c 3rd commit - robots.txt
bd5b39f 2nd commit - robots.txt
6f3ee36 1st commit - robots.txt
a177016 All files committed

然后,我通过键入gitcheckout bd5b39f切换到第二次提交来创建一个新分支。

然而,当我想回到master时,通过键入gitcheckout-master,我得到了以下输出。

$ git checkout master
fatal: bad object refs/desktop.ini

我在谷歌上搜索了一下,找到了这个解决方案:Git/Google Drive错误引用

一旦我意识到发生了什么,清理就相当简单了:

  1. 暂停Google Drive以防止进一步干扰
  2. 删除存储库中所有隐藏的desktop.ini文件。我通过命令行窗口,但应该可以通过Windows资源管理器选择正确
  3. 压缩Git数据库
  4. 恢复Google Drive

我曾试图使用Windows资源管理器和命令行删除desktop.ini文件,但最终得到了这个输出。

$ git checkout master
fatal: bad object refs/desktop.ini
D       desktop.ini

我不理解步骤3-压缩Git数据库。

我还查看了stackoverflow的这个链接,它很相似,但不相同:致命坏对象

$ git gc
error: bad ref for .git/logs/refs/heads/desktop.ini
error: bad ref for .git/logs/refs/desktop.ini
fatal: bad object refs/desktop.ini
fatal: failed to run repack

如有任何帮助,不胜感激。

好的。我想我知道如何解决这个问题,但我不知道背后的理论,所以如果有人能强调这个理论,我将不胜感激。

很明显,当我输入时,我扩展了提交

git checkout <commithash>

不是一个分支。

在有了一个分离的HEAD之后,我试图输入一个新的分支:

git checkout -b newbranch

从那里,我可以向主人结账。

提交后的日志输出

$ git log --oneline
44f1480 (HEAD) 6th commit
cf8add8 test2
72e8617 test1
c12d36f robots.txt - 2nd A commit
57d8a08 robots.txt - 2nd commit
ed9b73f robots.txt - 1st commit
08ab2a3 All files Committed

git checkout-b newbranch 后的日志输出

$ git log --oneline
44f1480 (HEAD -> newbranch) 6th commit
cf8add8 test2
72e8617 test1
c12d36f robots.txt - 2nd A commit
57d8a08 robots.txt - 2nd commit
ed9b73f robots.txt - 1st commit
08ab2a3 All files Committed

注意44f1480(HEAD->newbranch(。不确定这是否是解决问题的正确方法,但它对我有效。

我最近在VS Code中查看Git Graph扩展时遇到了这个问题。我发现这与错误结账无关,所以我想在这里为其他人添加我的解决方案。

首先,从Google Drive中删除所有git存储库。使用GitHub或其他工具进行备份。

然后从文件夹和所有子文件夹中删除所有desktop.ini文件;

  1. 以管理员身份运行CMD
  2. 使用cd导航到坏文件所在的文件夹
  3. 删除所有";desktop.ini";使用del desktop.ini /A:H /S的文件夹和所有子文件夹中的文件
  4. 重新加载git图形扩展,错误应该已经消失

Git不喜欢Windows在Google Drive中创建的大量无用的desktop.ini文件。

到目前为止,我找到的最好的解决方案是在项目文件夹中搜索desktop.ini,将它们全部选中并删除。然后您可以毫无问题地重新运行git命令。

我在每天开始运行git pull时都会这样做,每次删除300多个。

最新更新