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

时间:2015-02-21 12:12:57

标签: git shallow-clone

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

+------------------------------------------------------------------+
| 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,它知道我的意思?

1 个答案:

答案 0 :(得分:0)

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

浅度主要是std::string getUser() { char username[64]; // Use the ASCII version of the function if (GetUserNameA(username, sizeof username)) { return username; } // An error std::cerr << "Error getting username: " << GetLastError() << '\n'; return ""; } 属性。因此可以使用fetch执行fetch并保留历史记录,而无需过时的提交。

现代版的Git有--depth 200选项。我认为它确实允许自从某个提交以来维护所有内容&#34;。