You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu VM访问Windows SMB共享Git仓库时push/pull报错如何解决

解决方案

核心报错根因

你遇到的推送失败本质是三个问题:

  • CIFS/SMB挂载时没有配置正确的Linux权限映射,当前Ubuntu用户对共享目录没有Git操作需要的临时文件创建、写入权限
  • 直接把带工作区的普通Git目录作为远程共享仓库,不符合Git推送的设计规范
  • 早期使用gvfs用户态挂载SMB,对Git需要的文件锁、原子操作支持不完整

具体修复步骤

  1. 重新配置CIFS挂载参数
    先卸载现有挂载:

    sudo umount /mnt/cifs
    

    执行带权限映射的挂载命令,替换对应占位符为你实际的共享配置:

    sudo mount -t cifs //Windows服务器地址/共享目录名 /mnt/cifs -o username=Windows共享账号,password=Windows共享密码,uid=$(id -u),gid=$(id -g),file_mode=0775,dir_mode=0775,nounix,noserverino
    

    参数说明:

    • uid=$(id -u)、gid=$(id -g):将挂载目录的所有者映射为当前登录的Ubuntu用户,避免root用户独占权限
    • file_mode=0775、dir_mode=0775:给所有用户开放读写执行权限,适配共享场景
    • nounix、noserverino:禁用SMB的Unix扩展、避免服务端inode号冲突,解决Git文件识别异常问题
  2. 创建裸仓库作为共享远端
    Git不支持直接推送到带工作区的普通仓库,需要创建专门用于共享的裸仓库:

    cd /mnt/cifs
    git init --bare demo.git
    
  3. 修改本地仓库的远程地址
    进入本地开发的仓库目录,执行:

    git remote set-url origin /mnt/cifs/demo.git
    
  4. 测试推送
    执行推送命令即可正常提交:

    git push origin master
    

其他报错说明

你执行git push origin/master报错是命令格式错误:origin/master是本地的远程追踪分支名称,不是远程仓库名,正确的推送语法为git push <远程仓库名> <分支名>。

内容的提问来源于stack exchange,提问作者JWorkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 20:06:01