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

Linux中Windows共享文件夹上托管的git repo上的推送错误,git,shared-directory,Git,Shared Directory,我看到了,这一个,这一个,但他们似乎回避了我的处境 我在windows上有一个共享文件夹。我在那里创建了一个git回购(带有--bare选项)来启动一个项目 在使用windows的本地文件夹上,我已通过以下方式克隆了repo: git克隆\\\shared\u folder\u name\u folder\u与\u git\u repo的名称\u 我能正常地推 然后在linux上,我成功地克隆了它: git clone ~/.gvfs/smb-share:server=<ip addres

我看到了,这一个,这一个,但他们似乎回避了我的处境

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

在使用windows的本地文件夹上,我已通过以下方式克隆了repo:
git克隆\\\shared\u folder\u name\u folder\u与\u git\u repo的名称\u

我能正常地推

然后在linux上,我成功地克隆了它:

git clone ~/.gvfs/smb-share:server=<ip address>,share=shared_folder_name/name_of_folder_with_git_repo
git clone~/.gvfs/smb share:server=,share=shared\u folder\u name/name\u of\u folder\u with\u git\u repo
看起来不错,但我不能从linux上推。显示的erro消息为:

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'
remote:错误:对象目录/home/my_username/.gvfs/smb共享不存在;检查.git/objects/info/alternates。
远程:错误:对象目录服务器=,共享=共享的\u文件夹\u名称/具有\u git\u repo的\u文件夹\u的名称\u不存在;检查.git/objects/info/alternates。
远程:错误:对象目录/home/my_username/.gvfs/smb共享不存在;检查.git/objects/info/alternates。
远程:错误:对象目录服务器=,共享=共享的\u文件夹\u名称/具有\u git\u repo的\u文件夹\u的名称\u不存在;检查.git/objects/info/alternates。
远程:错误:对象目录refs/heads/master未指向有效对象!
远程:致命:错误的对象头
错误:对象目录/home/my_username/.gvfs/smb共享不存在;检查.git/objects/info/alternates。
错误:对象目录服务器=,共享=共享的\u文件夹\u名称/具有\u git\u repo的\u文件夹\u的名称\u不存在;检查.git/objects/info/alternates。
错误:对象目录refs/heads/master未指向有效对象!
致命:坏物体头部
到/home/my_username/.gvfs/smb share:server=,share=shared_folder_name/name_of_folder_with_git_repo
! [远程拒绝]主机->主机(缺少必要的对象)
错误:无法将某些引用推送到“/home/my\u username/.gvfs/smb share:server=,share=shared\u folder\u name/name\u of\u folder\u with\u git\u repo”
在远程存储库中,.git/objects/info/是一个空文件夹

我试过添加不同的遥控器,但没有用。我希望没有smb助手不会成为一个问题,否则我将无法克隆


我需要找到一种方法,能够相对正常地推送到这个共享文件夹上的repo,最好不需要重复使用sudo。

一般来说,我不会使用gvfs fuse功能来托管或克隆存储库。它在过去提供了一些奇怪的、非POSIX的行为,而它的某些方面导致了这里的失败。通过MTP将一些文件传输到Android手机可能没问题,但对于像Git这样有严重文件系统一致性要求的东西来说,它不够健壮

您最好使用内置于Linux中的
cifs
文件系统(如您链接的AskUbuntu答案中所述),或者在Windows机器上托管一个SSH服务器并按此方式运行


请注意,有问题的不是FUSE文件系统,而是gvfs具体的FUSE;sshfs在这方面非常有效,而且非常健壮。

我不熟悉文件系统,但是如果您建议挂载
sudo mount-t cifs[args]
,虽然这可能是有效的,但在linux机器上使用sudo对我来说也是一大难题。我是在个人电脑上做的,但每次重启电脑时,我都必须再次使用sudo。所以,虽然我认为你可能是对的,但这并不能解决我的问题;您可以在
/etc/fstab
中将挂载标记为用户可挂载,因此在设置它时只需要sudo一次。是什么阻止您在专用远程框上创建repo以及通过URL推/拉?ssh或https@Ron什么是专用远程机箱?您可以设置git服务器,如github.com或gitlab,但可以在您的专用计算机上。。。签出gitolite或gitlab。。您只需推送到该框的主机名/IP(例如,它相对于您编写代码的其他工作站是远程的..而不是推到某个疯狂的路径,而是推送到主机名:reponame)