【问题标题】:How to maintain shallow clone of a set of branches in git如何在git中维护一组分支的浅克隆
【发布时间】:2015-02-21 12:12:57
【问题描述】:

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

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

【问题讨论】:

标签: git shallow-clone


【解决方案1】:

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

浅层主要是fetch 属性。因此,可以使用 --depth 200 执行 fetch 并在不提交太旧的情况下保持历史记录。

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

【讨论】:

  • 选项 --shallow-since 也可能对一些类似的用例有用。
猜你喜欢
  • 2011-06-23
  • 2017-04-25
  • 2014-03-17
  • 2021-06-26
  • 2017-02-09
  • 2020-06-26
  • 1970-01-01
  • 2010-12-19
相关资源
最近更新 更多