Как сохранить мелкий клон набора ветвей в 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
. Я думаю, что это именно то, что позволяет "поддерживать все с определенной фиксации".