微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从Linux在Windows共享文件夹上托管的git repo上推送错误

如何解决从Linux在Windows共享文件夹上托管的git repo上推送错误

我见过this question on SE,另外一个question on SuperUser和这个question on AskUbuntu,但他们似乎避开了我的处境。

我在Windows上托管了一个共享文件夹。我在那里创建了一个git repo(带有--bare选项)来启动一个项目。

在带有Windows的本地文件夹上,我设法使用以下命令克隆了存储库: git clone \\<ip address>\shared_folder_name\name_of_folder_with_git_repo

我可以正常推动。

然后在linux上,我成功使用以下命令克隆了它:

git clone ~/.gvfs/smb-share:server=<ip address>,share=shared_folder_name/name_of_folder_with_git_repo

看起来不错,但我不能从Linux推送。显示错误消息是:

remote: error: object directory /home/my_username/.gvfs/smb-share does not exist; check .git/objects/info/alternates.
remote: error: object directory server=<ip address>,share=shared_folder_name/name_of_folder_with_git_repo does not exist; check .git/objects/info/alternates.
remote: error: object directory /home/my_username/.gvfs/smb-share does not exist; check .git/objects/info/alternates.
remote: error: object directory server=<ip address>,share=shared_folder_name/name_of_folder_with_git_repo does not exist; check .git/objects/info/alternates.
remote: error: object directory refs/heads/master does not point to a valid object!
remote: fatal: bad object HEAD
error: object directory /home/my_username/.gvfs/smb-share does not exist; check .git/objects/info/alternates.
error: object directory server=<ip address>,share=shared_folder_name/name_of_folder_with_git_repo does not exist; check .git/objects/info/alternates.
error: object directory refs/heads/master does not point to a valid object!
fatal: bad object HEAD
To /home/my_username/.gvfs/smb-share:server=<ip address>,share=shared_folder_name/name_of_folder_with_git_repo
! [remote rejected] master -> master (missing necessary objects)
error: Failed to push some refs to '/home/my_username/.gvfs/smb-share:server=<ip address>,share=shared_folder_name/name_of_folder_with_git_repo'

在远程存储库中,.git / objects / info /是一个文件夹。

我尝试添加其他遥控器,但无济于事。我希望缺少smb helper不会成为一个问题,否则我将无法克隆。

我需要找到一种方法,该方法能够相对正常地将其推送到此共享文件夹上的仓库中,最好不需要重复使用sudo。

解决方法

通常,我不会使用gvfs-fuse功能托管或克隆存储库。过去,它提供了一些奇怪的,非POSIX的行为,并且在此方面引起了失败。通过MTP将一些文件传输到Android手机可能很好,但是对于像Git这样的具有严格文件系统一致性要求的应用来说,它还不够强大。

最好使用Linux内置的cifs文件系统(如所链接的AskUbuntu回答中所述),或在Windows计算机上托管SSH服务器并采用这种方式。

请注意,出现问题的不是FUSE文件系统,而是特定于gvfs-fuse。 sshfs为此非常有用,并且非常健壮。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。