LINUX.ORG.RU

git вытянуть часть репозитория как отдельную ветку

 , ,


0

3

Есть репозиторий с конфигами, который я использую в качестве домашних дот-файлов. Хочу часть из них, относящуюся к разработке, выделить в отдельный бранч, чтобы вытягивать только их, например, на рабочей машине. Но при этом они должны остаться в мастере. Естественно, эти выделенные конфиги должны постоянно синхронизироваться между ветками.

Пока нашёл такой способ: сделать orphan branch и подмержить туда нужные конфиги, а потом периодически синхронизировать с изменениями в мастере. Но мне кажется, я переизобретаю велосипед, потому что не умею в git branching. Есть ли какой-то более простой путь вытянуть некоторое под-дерево из основной ветки под видом отдельной ветки? Для моих целей достаточно и реад-онли ветки, т.к. все коммиты всё равно будут только в мастер.

И посоветуйте, пожалуйста, какой-нибудь туториал по гиту и бранчам. Когда-то натыкался в интернетах на туториал-репозиторий, оформленный в виде квеста (свитчнись в бранч, найди инструкции, следуй дальше и т.п.), но сейчас не могу найти его.

★★★

Хочу часть из них, относящуюся к разработке, выделить в отдельный бранч, чтобы вытягивать только их, например, на рабочей машине. Но при этом они должны остаться в мастере.

Зачем? Чтобы место и трафик экономить? Когда ты тянешь репозиторий, с ним (обычно) тянутся все-все веточки, включая master. И дот-файлы сами по себе по идее не должны занимать мегабайты.

Есть ли какой-то более простой путь вытянуть некоторое под-дерево из основной ветки под видом отдельной ветки?

Вот чтобы именно это сделать есть git filter-branch --subdirectory-filter dir/with/dev/configs. Он может выделить в ветку все изменения, которые делались в указанной поддиректории.

И посоветуйте, пожалуйста, какой-нибудь туториал по гиту и бранчам.

https://github.com/k88hudson/git-flight-rules

ilammy ★★★
()
Ответ на: комментарий от ilammy

Вот чтобы именно это сделать есть git filter-branch --subdirectory-filter dir/with/dev/configs. Он может выделить в ветку все изменения, которые делались в указанной поддиректории.

Об этом я знаю, но это не подойдёт, если файлы собраны не в одной директории и в некоторых директориях нужна только часть содержимого.

https://github.com/k88hudson/git-flight-rules

Спасибо.

E ★★★
() автор топика
Ответ на: комментарий от xaizek

Sparse checkout не то, что нужно?

Похоже, что именно то, что нужно. Правда, в случае с двумя ветками это не поможет их синхронизировать и придётся всё равно их явно мержить, но это меньшая проблема. Спасибо.

Есть ещё такие

Спасибо!

E ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.