如何git镜像我想要的一些指定分支



我正在使用包含数百个分支的存储库(因为此存储库被许多产品使用)。 如: $ git 分支 -a

远程/源/分支A

远程/源/分支B

远程/源/分支C

远程/源/分支D

......

但我只需要这个存储库的几个分支(可能只是分支 A、B)。 有什么办法我可以从这个存储库中镜像 A 和 B? 每次我在这个镜像存储库上使用 git 分支时,我总是感到困惑,它浪费了大量的系统资源。

这是我公司非常常用的回购,很多产品都在使用它。所以它有很多不同的分支。但是,我只是在研究其中一些产品(实际上仍然在 20 以上产品以上),我不关心其他分支,我只想镜像我的。我可以只使用 git 克隆 --mirror 来镜像我想要的一些分支吗?

虽然这可能超出了您的能力,但最好的解决方案是将每个产品放在自己的存储库中。 你在那里拥有的东西听起来就像当精通 TFVC 的人在没有先了解 git 的情况下尝试使用 git 时会发生什么。 我希望这会导致您面临的问题之外的其他问题。

由于您可能只需要按原样处理它,因此您可以执行以下操作:

您可以控制克隆使用的获取引用规范。

git config remote.origin.fetch <refspec>

在分支按产品命名的情况下,这将很容易。 例如,如果存储库具有类似

product_a/branch_1
product_a/branch_2
product_b/branch_1
...

然后,您可以使用像+refs/heads/product_a/*:refs/remotes/origin/*这样的 fetch refspect 来克隆product_a,或者如果您想克隆几个产品,则可以+refs/heads/product_a/*:refs/remotes/origin/product_a/* +refs/heads/product_c/*:refs/remotes/origin/product_c/*(不过,同样,我不建议后者)。

但我猜布局不是那么方便,您可能需要指定所需的单个分支,例如+refs/heads/branch_1:refs/remotes/origin/branch_1 +refs/heads/branch_3:refs/remotes/origin/branch_3 .... 这里的问题是,如果功能分支来来去去,您必须手动添加和删除它们(或以其他方式处理它们)。 所以治愈可能比疾病更糟糕。

无论如何,将它们放在一起,为使用几个特定分支的产品创建一个克隆,您可以说

git clone --single-branch -b branch_1 remote_repo_url my_product_A_repo
cd my_product_A_repo
git config remote.origin.fetch +refs/heads/branch_1:refs/remotes/origin/branch_1 +refs/heads/branch_3:refs/remotes/origin/branch_3 +refs/heads/branch_37:refs/remotes/origin/branch_37
git fetch

最新更新