致命错误:无法更新引用“head”:无法附加到“.git/logs/head”:无效的参数。

4
尝试将项目提交到Github时,出现错误:fatal: cannot update the ref 'head': unable to append to '.git/logs/head': invalid argument。在正确初始化目录并成功进行第一次推送后发生的。解决方法的重要部分是:我正在使用OneDrive来保存文件。
3个回答

7
另一个解决方案:
  • 不要在 OneDrive 同步的文件夹中克隆任何内容(如此处所示)
  • 像普通常规文件夹一样按预期的推送/拉取
  • 随时创建 git bundle:它会生成一个文件(代表完整的存储库内容),也可参见此处

您可以将一个文件存储在备份驱动器中。


5

不应该使用 OneDrive 等云同步服务来存储 Git 仓库,原因如下:

  • 首先,云同步服务是按文件同步的,而 Git 需要整个仓库处于单一状态,因此使用这些服务可能会导致仓库处于不一致状态而导致损坏。有人因此丢失了数据。
  • Git 需要提供 POSIX 语义的文件系统,包括能够原子性地追加文件。这通常可以在普通的 Windows 文件系统上实现,但许多云同步服务使用定制的文件系统,不提供这些功能,所以 Git 就不能与它们一起工作。

在这种情况下,您遇到了后一个问题。

跨设备同步仓库的最佳方法只是通过远程推送和拉取,例如 GitHub。您还可以使用 git bundle 通过任何您喜欢的方法传输捆绑文件。最后一种选择是使用 rsync -a --delete-after(最好使用 SSH)在机器之间进行同步,但必须确保仓库在执行此操作时完全闲置,这也意味着像 git gc 和编辑器集成等程序都没有运行。如果没有闲置,则可能会出现损坏。


3

解决方案:

如果尚未启动,请启动OneDrive。之后,您应该能够成功推送。


1
这对我有用。在我的情况下,我将repo存储在Dropbox下。 - alelom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接