我正在使用集中式 git 工作流程,其中 Windows 服务器上有一个中央存储库,并且我们在开发计算机上有工作目录。一切都很顺利,直到我在推送到远程存储库时突然开始出现错误。这是错误:
remote: fatal: failed to write object
fatal: sha1 file '<stdout>' write error: Broken Pipe
error: failed to push some refs to 'my_central_repo'
我不知道发生了什么,但我需要将我的项目推送到中央仓库,任何帮助将不胜感激。
这也可能是由于远程 git repo 目录的所有者权限问题造成的。以 root 身份创建目录时也会发生这种情况。
如果你这样做
# ls -al <repo-name>.git
然后看
drwxr-xr-x .. .. root root .. .. <repo-name>.git
那么这可能是问题的根源,您正在尝试使用非 root 帐户推送到存储库。
可以通过以下方式轻松解决:
# chown -R git:git <repo-name>.git ; ls -al
drwxr-xr-x .. .. git git .. .. <repo-name>.git
然后享受成功
git push
在解决问题时,我发现这篇文章解释了根本原因,但就我而言,是缓慢的网络导致了此问题。一旦我转移到更快的网络,推送就完成了。可能与超时有关。
在我的例子中,真正将第一次提交推送到远程 bitbucket 存储库。 cmd后出现错误:
git push -u origin master
通过删除“-u”标志解决了问题
我仍在试图找出根本原因,但怀疑这是与权限相关的错误。当我使用 GitServer 的管理员帐户将网络驱动器映射到中央存储库所在的目录时,它解决了问题。
奇怪的是,我之前推送到我的 GitServer 存储库时,与我的个人凭据映射的网络驱动器没有问题,所以我不确定发生了什么改变了我的用户存储库的权限。使用其他中央存储库的其他用户没有遇到此问题。
尝试将远程 URL 从 https 更改为 git
git remote set-url origin [email protected]:username/reponame.git
除非是 git 服务器的权限问题(你有管理员权限吗?),否则可能是自上次拉取以来有一些新的推送。尝试:
git pull --rebase origin master
git push origin master