git子模块不同步

时间:2016-11-04 13:02:42

标签: git git-submodules git-remote

我有一个git子模块。在我已经设置的服务器上,一切正常。在另一台服务器上,它没有在它应该去的子模块中找到修订版。所有更改都已推送到远程存储库。我将问题跟踪到遥控器,我可能在设置它时搞砸了。

在一切正常的服务器上:

$ cat .gitmodules 
> [submodule "foo/submodule"]
>         path = foo/submodule
>         url = https://:@gitlab.server.com:8443/goodremote/submodule.git
$ cd foo/submodule/
$ git remote -v
> origin  https://:@gitlab.server.com:8443/goodremote/submodule.git (fetch)
> origin  https://:@gitlab.server.com:8443/goodremote/submodule.git (push)
> upstream        https://:@gitlab.server.com:8443/badremote/submodule.git (fetch)
> upstream        https://:@gitlab.server.com:8443/badremote/submodule.git (push)

签出的提交位于origin遥控器上,因此我认为.gitmodules是正确的。

但是这是在服务器上无法正常工作的情况:

$ cat .gitmodules
> [submodule "foo/submodule"]
>         path = foo/submodule
>         url = https://:@gitlab.server.com:8443/goodremote/submodule.git
$ git submodule sync
$ git submodule update --init --recursive
> Initialized empty Git repository in foo/submodule/.git/
> remote: Counting objects: 13483, done.
> remote: Compressing objects: 100% (3001/3001), done.
> remote: Total 13483 (delta 10625), reused 13236 (delta 10444)
> Receiving objects: 100% (13483/13483), 103.89 MiB | 24.57 MiB/s, done.
> Resolving deltas: 100% (10625/10625), done.
> fatal: reference is not a tree: 71a57a9551a3c10229b92d724716a0f897001dab
> Unable to checkout '71a57a9551a3c10229b92d724716a0f897001dab' in submodule path 'foo/submodule'
$ cd foo/submodule
$ git remote -v
> origin  https://:@gitlab.server.com:8443/badremote/submodule.git (fetch)
> origin  https://:@gitlab.server.com:8443/badremote/submodule.git (push)

我理解错误消息。无法在该远程上找到应该检出的提交。但是,我不知道如何告诉子模块使用正确的遥控器。我可以在子模块中定义两个遥控器,还是至少更新子模块以使用另一个遥控器?我相信这是.gitmodules的用途,但显然它不起作用。

编辑:我设法以令人不满意的方式解决了这个问题。我在新服务器上设置了包含子模块的存储库,直到我遇到上面列出的错误。然后我进入子模块,修复所有遥控器并使用git submodule update。虽然这是有效的,但绝对不是它的工作方式。我很困惑。

0 个答案:

没有答案