Git将问题推送到本地Git存储库?

Git将问题推送到本地Git存储库?,git,Git,我在推送时出现以下错误,而如果我尝试从其他人的计算机进行推送。。有什么问题吗?在服务器上的git存储库上,我已向所有用户所属的组授予了写访问权限和安全权限 $ git push origin master Counting objects: 3, done. Writing objects: 100% (3/3), 275 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: error: objec

我在推送时出现以下错误,而如果我尝试从其他人的计算机进行推送。。有什么问题吗?在服务器上的git存储库上,我已向所有用户所属的组授予了写访问权限和安全权限

$ git push origin master    
Counting objects: 3, done.
Writing objects: 100% (3/3), 275 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: object directory /<IP>/<Folder Name>/objects does not exist; check .git/objects/info/alternates.
remote: error: object directory /<IP>/<Folder Name>/objects does not exist; check .git/objects/info/alternates.
remote: error: refs/heads/dev does not point to a valid object!
remote: error: refs/heads/master does not point to a valid object!
remote: fatal: bad object HEAD
error: object directory /<IP>/<Folder Name>/objects does not exist; check .git/objects/info/alternates.
error: refs/heads/dev does not point to a valid object!
error: refs/heads/master does not point to a valid object!
fatal: bad object HEAD
To //<IP>/<Folder Name>/
 ! [remote rejected] master -> master (missing necessary objects)
error: failed to push some refs to '//<IP>/<Folder Name>/'
$git推送原始主机
计数对象:3,完成。
写入对象:100%(3/3),275字节| 0字节/秒,完成。
总计3(增量0),重复使用0(增量0)
远程:错误:对象目录///对象不存在;检查.git/objects/info/alternates。
远程:错误:对象目录///对象不存在;检查.git/objects/info/alternates。
远程:错误:refs/heads/dev未指向有效对象!
远程:错误:refs/heads/master未指向有效对象!
远程:致命:错误的对象头
错误:对象目录///对象不存在;检查.git/objects/info/alternates。
错误:refs/heads/dev未指向有效对象!
错误:refs/heads/master未指向有效对象!
致命:坏物体头部
到////
! [远程拒绝]主机->主机(缺少必要的对象)
错误:无法将某些引用推送到“//”

在正常的
git推送操作中,有两台计算机,使用两个存储库,它们之间使用某种internet“电话”连接。在计算机上运行的Git将对象(带有它们丑陋的SHA-1哈希ID)交给它们计算机上的Git,并且它们的计算机使用适合它们计算机的任何方法将这些对象存储到它们的存储库中,这些方法可能适用于您的计算机,也可能不适用于您的计算机

当您在一台计算机上执行纯本地“推送”操作时,您的计算机将同时扮演这两个角色。Git必须同时扮演发送者(从计算机上的存储库发送对象)和接收者(从计算机上的存储库接收对象)

If-这是一个相当大的“If”,显然是出问题的地方,这两个存储库都在您的计算机上,这一切都起作用,因为您的第二个Git作为接收器,在您的计算机上本地运行,将对象存储在“他们的”存储库中(实际上是您自己的另一个存储库)以适合您的计算机的格式。但是,如果“他们的”存储库位于网络驱动器上,或者像本例中明显发生的那样,使用可以从他们的计算机访问但不能从您的计算机访问的网络驱动器,当您的计算机尝试“播放它们”并从您的系统访问这些网络驱动器文件时,它就是不起作用

有两种解决方案:

  • 设置您的计算机,使您拥有与他们相同的访问权限,以便Git对共享文件的操作与Git对共享文件的操作相同,这样,当Git“假装是他们”时,一切都会正常工作

    当然,执行此操作的详细信息取决于网络驱动器的设置。它们将根据操作系统和服务器机器等而有所不同

  • 停止在本地推送:使用他们的计算机,它确实可以访问他们的网络驱动器。将对象交给他们计算机上的Git


    • 这有点奇怪,但我在我的机器上安装了2.11v,我将它恢复为2.9v,这基本上是服务器上git的版本,我能够毫无问题地推送到master branch和development branch。

      也许这与您有关:您在推送更改之前是否尝试过拉取更改?同时尝试看看git remote-v向您展示了什么你。接下来,做一个git fetch--all,然后尝试与您的repo同步,可能是有人推了什么。其次,检查你的原点/主点是否指向某个东西,它看起来好像没有指向任何东西。最后,检查您是否有权在主服务器上推送,尽管当您没有权限时,错误消息会有所不同。没有任何工作…存储库位于远程服务器上。有两个本地用户/系统。因此,我尝试从一个系统中克隆、编辑、添加、提交和推送。。所有的东西都能工作,但从其他系统它不能,我得到同样的错误。访问权限和权限这两个用户的级别不相同。以上所有内容仍然适用:一台计算机是此工作的计算机,另一台计算机没有访问权限。当你告诉Git使用本地操作时,它相信它可以自己做任何事情,而不用在第二台计算机上启动第二台Git。要么调整内容使两台计算机都可以访问,要么停止使用本地协议。(尽管我从你的其他评论中看到,你的Git 2.11版本可能有一个bug,与2.9版本相比,它认为更多/太多的东西是本地的。)多亏了torek,我们将在几天后将回购转移到github,因此这些错误可能不会发生。