我在我的 Windows 7 机器上使用 git,推送到 Server 2008 机器上的共享文件夹。在过去的 6 个月里,这一直运行良好。但是,截至昨天,我无法再推送到远程仓库。每次我尝试,我都会得到以下信息:
$ git push
Counting objects: 39, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (23/23), done.
Writing objects: 100% (23/23), 8.42 KiB, done.
Total 23 (delta 15), reused 0 (delta 0)
Unpacking objects: 100% (23/23), done.
error: Couldn't set refs/heads/my-branch
To //my-server/Code/my-project.git
! [remote rejected] my-branch -> my-branch (failed to write)
error: failed to push some refs to '//my-server/Code/my-project.git
谷歌搜索“未能推送某些参考”错误会给出关于没有先拉(我完全是最新的)和没有正确权限(我可以完全访问所有内容,并且可以创建/删除/编辑文件)的各种结果通过资源管理器在远程仓库中)。
然后,我偶然发现了这篇博客文章http://henke.ws/post.cfm/error-failed-to-push-some-refs,其中提到您可能必须在远程存储库上运行一些清理命令。所以我在远程存储库上运行了 git gc :
$ git gc
Counting objects: 3960, done.
Compressing objects: 100% (948/948), done.
Writing objects: 100% (3960/3960), done.
Total 3960 (delta 2971), reused 3942 (delta 2964)
你瞧,我又能推了!
$ git push
Counting objects: 39, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (23/23), done.
Writing objects: 100% (23/23), 8.42 KiB, done.
Total 23 (delta 15), reused 0 (delta 0)
Unpacking objects: 100% (23/23), done.
To //my-server/Code/my-project.git
8153afd..1385d28 my-branch -> my-branch
但是,问题是我现在每次想要执行 push 时都必须在远程存储库上运行 gc 。如果我不这样做,我会再次收到“无法推送一些参考”错误。
那么,为什么我的回购如此失败?我怎样才能永久解决这个问题?