Windows下Git推送至远程仓库报错‘couldn't set refs/heads/homepage’求助
问题:Windows推送Git分支到远程共享仓库失败,Mac正常,求永久解决办法
我遇到个头疼的问题:在Windows上往远程Git仓库推homepage分支时一直报错,但用Mac推送完全没问题。试了网上好几种方法都不管用,现在想找个一劳永逸的解决办法,不想每次都手动折腾。
报错信息
在Git BASH和GitHub Desktop里,报错是这样的:
remote: error: couldn't set 'refs/heads/homepage' To file:////192.168.0.60/*** ! [remote rejected] homepage -> homepage (failed to update ref) error: failed to push some refs to ' file:////192.168.0.60/***'
用Git GUI的时候弹出的是关于无法更新引用的权限类提示。
临时救急(但不是长久之计)
我试过手动删掉远程裸仓库\\192.168.0.62\***\refs\heads路径下的homepage分支文件,删完确实能推成功,但每次遇到都要手动操作,太麻烦了,想找个永久方案。
永久解决方案建议
1. 检查Windows共享目录的权限(最可能的原因)
因为你的远程仓库是通过Windows共享目录访问的,Windows的文件权限和Mac差异很大:
- 右键目标共享目录 → 属性 → 安全选项卡,确认你用来访问共享的Windows账号,拥有修改、写入该目录下所有子文件和文件夹的权限,一定要把权限应用到所有层级
- 注意区分共享权限和NTFS权限,两个地方都要检查,确保没有限制写入
refs/heads/下的分支文件
2. 修复远程裸仓库的引用问题
远程裸仓库的引用文件可能出现权限异常或者损坏,你可以在远程仓库所在的机器上(或者通过共享目录进入仓库路径)执行这条命令:
git update-server-info
它会更新仓库的服务器信息,修复可能的引用权限或索引损坏问题。
3. 替换file://协议,改用SSH推送(彻底解决共享问题)
Windows的file://共享经常会有文件锁定、权限兼容的问题,换成SSH协议推送会稳定很多:
- 在远程仓库所在的机器上开启OpenSSH服务(Windows 10/11自带,直接在设置里启用即可)
- 把Git远程地址从
file:////192.168.0.60/***改成ssh://你的用户名@192.168.0.60/仓库绝对路径.git - 配置SSH密钥免密登录,之后推送就再也不用纠结共享权限的问题了
4. 排查Windows的文件锁定程序
有时候Windows的杀毒软件、后台文件扫描程序会锁定共享目录里的文件,导致Git没法修改refs/heads/homepage:
- 暂时关闭杀毒软件或文件防护程序,再尝试推送
- 确保没有其他文件管理器、编辑器正在打开远程仓库内的文件
如果权限检查没问题,我强烈建议改用SSH协议,这能从根源上避免Windows共享带来的各种奇怪问题。
内容的提问来源于stack exchange,提问作者jay patel
相关产品推荐
相关产品推荐

