我正在使用远程git存储库。我成功提交了我的文件,现在我正在尝试 把它推上去。
操作因此消失而失败:
git.exe push --progress "origin" master:master
error: unpack failed: unpack-objects abnormal exit
error: RPC failed; result=18, HTTP code = 200
我在Windows 7上使用TortoiseGit客户端。
为什么我收到此消息?如何从这种状态恢复?
答案 0 :(得分:35)
如果您的git repo是自托管的,请检查远程git目录上的文件系统权限。如果这被破坏,您的git服务器可能没有权限。
例如,我在Ubuntu服务器上托管自己的gitosis系统。当我在服务器上创建git repo时,我运行sudo git init --bare <repo name>
然后我必须运行sudo chgrp -R gitosis <repo name> && sudo chown -R gitosis <repo name>
。
答案 1 :(得分:20)
根据this文章git repack remote/origin/master
可能有助于您的本地存储库损坏。要检查您是否可以尝试将远程仓库克隆到新目录并从中进行测试推送。
答案 2 :(得分:8)
当遥控器上没有剩余空间时,也会发生这种情况,请尝试释放一些空间。
答案 3 :(得分:1)
检查远程/原始存储库的权限。它们可以由git用户编写吗?如果没有,您将收到此错误。类似的东西:
chown git_user.git_user -R /path/to/repo/your_funky_repo
应该在* nix系统上做到这一点。如果你的遥控器在Windows上,我相信你可以运行相同的东西。
答案 4 :(得分:1)
当我设置一个新的远程服务器并使用我的root
用户(而不是我的个人用户帐户)创建远程git repo /文件夹时,我遇到了这个问题。通过删除git repos并使用我的个人帐户重做它们来解决问题。一切都按预期进行。
答案 5 :(得分:0)
同时检查您的磁盘是否已满。几分钟前我在我的一个VPS上遇到了同样的问题。
答案 6 :(得分:0)
当我将我的git从VPN更改为https连接时,我遇到了同样的麻烦。
我的git存储库中发生了一些事情,我再也无法推动了,但拉仍然有效。我还尝试使用git -repack remote/origin/master
解决方案,但问题仍然相同。
要解决此问题,I just made a new clone from my repo with the new connection
并且能够使用已知的推送方法。我不知道为什么git -repack无法解决这个问题,但是这样肯定会有效!
我猜有些东西不符合服务器的VPN远程设置,因为我将访问方法更改为https。
希望这有帮助。
答案 7 :(得分:0)
在Windows上,对我有用的唯一修复是从我的.gitconfig文件中删除以下行:
[credential]
helper = !'C:\\Users\\YourNameHere\\AppData\\Roaming\\GitCredStore\\git-credential-winstore.exe'
一旦我这样做,我手动推送一次(成功),然后将上面的行添加回.gitconfig,一切正常。
答案 8 :(得分:0)
在我的(gitlab)服务器上,我首先需要知道-R git:git repositories /,但git repack不起作用。当我使用scp将目标文件从我的本地仓库复制到服务器时,问题得以解决:
scp .git/objects/0d/449dd91d8c20c1820d1284371b28637e08a0f3 root@server:/home/git/repositories/my/project.git/objects/0d/
答案 9 :(得分:0)
如果您使用HTTP URL,则无法通过HTTP推送数据。 HTTP用于只读访问。改为使用ssh。
执行git remote -v
检查您的存储库URL是否为HTTP。
您可以通过执行此git remote set-url origin ssh:user@server/dir/project.git
之后,你可以推!
答案 10 :(得分:0)
我成功使用“ git push —no-thin origin HEAD
”推送了它
有时,当我们执行git push将新分支推送到远程存储库时,它将被远程存储库阻止。
也许我们没有适当的权限。但是,当我将--no-thin
参数添加到git push时,可以将其向上推送。
但是,此命令可能会受到不同级别的权限的影响,因此不能保证将其推送。但是我成功地完成了这一努力。
答案 11 :(得分:0)
就我而言,远程仓库是一个浅表克隆。我正在推动合并提交,该提交显然使用的是早于浅层回购的最早提交之前的提交。
要解决此问题,您需要取消遥控器的静音:
git fetch --unshallow