Как сохранить мелкий клон набора ветвей в 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 до сегодняшнего дня с repo1 при сохранении его неопределенности - это то, за что я застрял (в идеале я хотел бы сохранить все с определенной фиксации, но я понимаю, что это невозможно). Кажется, мне приходится делать несколько команд git fetch каждый раз, правильно? Есть ли способ поместить это в файл конфигурации, чтобы я мог просто сделать git fetch, и он знает, что я имею в виду?

Ответ 1

Я столкнулся с этим вопросом при поиске аналогичных сложных Git потребностей и прекрасно понимал, что вопрос составляет 2 года. Я отвечаю, потому что ответов нет вообще, а вопрос по-прежнему очень важен.

Недостаток - это прежде всего свойство fetch. Таким образом, можно fetch выполнить --depth 200 и сохранить историю без слишком старых коммитов.

В современных версиях Git есть опция --shallow-exclude. Я думаю, что это именно то, что позволяет "поддерживать все с определенной фиксации".