0

我有一个包含 3 个远程存储库的设置,原始存储库、内部存储库、外部存储库。当我创建一个新的本地安装时,我克隆源并将内部和外部添加为远程。

当我执行git fetch --all 但在内部和外部,它们似乎没有从服务器获取(尽管我看到服务器被联系和查询)时出现了新的远程分支 。

我也试过git remote update internal没有任何运气。

使用git ls-remote internal我可以看到任何新创建的远程分支,但我无法克隆它们(可能是因为有关分支的信息尚未提取到我的本地存储库)。

在互联网上搜索我发现这篇博客文章http://www.jukie.net/bart/blog/fetch-all-git-branches描述了相同的问题并使用自定义脚本解决了它。

当您使用最近的 git 版本克隆一个新的 git 存储库时,默认情况下 git 将创建一个包含所有远程分支的 .git/remotes/origin。该文件列出了要在获取时更新的所有远程分支。

随着时间的推移,远程可能会获得更多分支,并且可能需要更新远程分支列表。找出远程可用的方法是调用 git-ls-remote origin,然后挑选出感兴趣的分支,并将它们添加到 .git/remotes/origin 文件中。

为什么git fetch --all不使用新分支更新 .git/remotes/[remote_name] 文件?真的没有办法用普通的 git 命令来更新它吗?

4

2 回答 2

1
git fetch internal --all
git fetch external --all
于 2012-08-07T07:06:38.773 回答
-1

我发现了另一个帖子 [1]:在 git 中,我如何检查远程存储库的远程分支?这让我在 git config 中查找我的设置。出于某种原因,我设法让遥控器只跟踪主分支,而不是遥控器的默认 glob refspec(在 refs/remotes/remote_name/ 命名空间下)。

所以我的配置看起来像这样

[remote "internal"]
    url = path_to_my_remote_repo
    fetch = +refs/heads/master:refs/remotes/internal/master

并将其更改为

[remote "internal"]
    url = path_to_my_remote_repo
    fetch = +refs/heads/*:refs/remotes/internal/*

为我解决了这个问题。

于 2012-08-08T05:01:49.893 回答