繁体   English   中英

如何在git中维护一组分支的浅层克隆

[英]How to maintain shallow clone of a set of branches in git

我想维护一个浅层,镜像,裸露的几个分支的克隆。 我将从不同项目分支的本地克隆。 例如

+------------------------------------------------------------------+
| repo1: server1:original-repo.git branches: A, B, C, D, E         |
+------------------------------------------------------------------+
  ↓
+------------------------------------------------------------------+
| repo2: server2:shallow-bare-selective-clone branches: A, B only  |
+------------------------------------------------------------------+
  ↓                                 ↓
+-------------------------------+ +--------------------------------+
| repo3: server2:clone repo2, A | | repo4: server2:clone repo2, B  |
+-------------------------------+ +--------------------------------+

所以我可以像这样制作repo2

git clone --bare --mirror --depth 1 server1:repo1  repo2
cd repo2
git fetch --depth 200 origin A
git fetch --depth 200 origin B

然后我认为repo3和4非常容易 - 他们可以从repo2克隆他们想要的所有东西,他们将受到repo2的浅薄限制。

但是,在保持其浅薄度的同时保持repo2的最新状态是我所坚持的(理想情况下,我希望保持一切,因为某个提交,但我明白这是不可能的)。 看来我每次都要做多个git fetch命令,这是对的吗? 有没有办法在配置文件中弹出它,以便我可以做git fetch ,它知道我的意思?

我在寻找类似复杂的Git需求时遇到了这个问题,并且完全理解这个问题是2年前的问题。 我正在回答,因为根本没有答案,而问题仍然非常有效。

Shallowness主要是fetch属性。 因此,可以使用--depth 200进行fetch并保留历史记录,而无需过多的提交。

现代版的Git有--shallow-exclude选项。 我认为这正是允许“自某次提交以来维护所有内容”的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM