Как отследить две версии проекта в одном GIT-репозитории? - PullRequest
5 голосов
/ 08 января 2010

У меня есть две версии одного проекта в одном локальном репозитории git. Я должен зафиксировать этот репозиторий в 2 удаленных репозитория, по одному для каждой версии;

ЛОКАЛЬНЫЙ УСТРОЙСТВО (V1 / V2) -> УДАЛЕННЫЙ УСТРОЙСТВО (V1), УДАЛЕННЫЙ УДАР (V2)

У меня есть несколько файлов в хранилище LOCAL GIT, которые должны идти только в REMOTE GIT (V1), а другие должны идти только в REMOTE GIT (V2). Теперь я фиксирую полный локальный репозиторий для обоих пультов. Могу ли я передать только некоторые файлы в REMOTE1?

Мне нужно иметь обе версии проекта в одном репозитории, но хотелось бы иметь возможность немного разделить историю. Я не думаю, что какое-либо ветвление может помочь, так как тогда мне придется вносить одинаковые изменения в основном в обе ветви. Большая часть кода, 90% кода одинакова для VER 1 и VER 2. Новый код обычно одинаков для обеих версий.

Ответы [ 3 ]

3 голосов
/ 08 января 2010

Ветвление это именно то, что вам нужно. Разветвление с Git легко и очень быстро, так что вы ничего не потеряете, кроме нескольких нажатий клавиш.

Вы можете использовать 3 филиала. Создайте «общую» ветку, в которой вы будете работать с вещами, общими для обеих «вилок», и объединитесь с ними после коммитов. По конкретным вопросам работайте в одной из веток.

Git использует жесткие ссылки в файловой системе, поэтому ветки дешевы как с точки зрения скорости, так и используемого пространства.

Наконец, вы всегда можете выбрать, какую ветвь нажимать / тянуть.

0 голосов
/ 08 января 2010

Создайте три репозитория Git: core, app_1, app_2. В каждом из репозиториев app создайте подмодуль Git, ссылающийся на репозиторий core.

Рассматривайте репозиторий core как чистую библиотеку, а репозитории app как чистых потребителей библиотеки, структурируя три проекта таким образом, чтобы вы могли сохранить все общее для двух "версий" в репозитории core и все будет расходиться между двумя версиями в app хранилищах. Структурируйте репозитории app таким образом, чтобы проект core можно было размещать оптом, без каких-либо изменений, в подкаталог в репозиториях app. Вам может потребоваться минимальный общий сценарий инициализации, общий для всех app репозиториев, но это небольшая цена.

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

0 голосов
/ 08 января 2010

Похоже, вам нужно использовать подмодули git-submodule. Вы должны хранить общий код в главном хранилище, но затем хранить отдельные версии в подмодулях. Вы не можете разделить историю с помощью мерзавца. Каждый коммит криптографически основан на контенте и родителях.

...