4

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

+------------------------------------------------------------------+
| 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 从 repo1 保持最新,同时保持它的浅薄是我坚持的(理想情况下,我想保持自某个提交以来的所有内容,但我知道这是不可能的)。看来我每次都必须执行多个 git fetch 命令,对吗?有没有办法在配置文件中弹出它,这样我就可以做到git fetch并且它知道我的意思?

4

1 回答 1

1

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

肤浅主要是fetch财产。因此,无需太旧的提交就可以fetch处理--depth 200和维护历史。

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

于 2017-03-14T13:45:31.193 回答