簡體   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