Вы можете уйти от этого с помощью ветвей или папок, но это главный кандидат ИМО для подмодулей. Я использую их для таких вещей. Вот примерный набор из 3 РЕПО:
common/ (bare repo of common files)
.git/
wp7/ (regular repo of wp7 specifics)
.git/
common/ (submodule)
wp8/ (same as wp7, but for wp8)
.git/
common/ (submodule)
Чтобы сделать общую, который вы бы просто взять регулярный репо и git clone --bare repo optional_bare_repo_name
. Если вы не укажете его имя, оно будет клонировать common
в папку с именем common.git
, которая является пустой версией. Теперь вы можете либо в wp repo сделать git subdmodule add path/to/common optional_folder_name
(он использует имя папки репо, если вы не укажете его). Это эффективно клонирует общее репо в папку внутри каждого репозитория wp. Они также могут быть ветвями одного репо; вы просто добавите подмодуль в каждую ветвь.
Подмодули немного больше обслуживания, чем ветви, но они что-то не делают. Они дают вам параллельную линию развития внутри вашего репо. Когда вы делаете изменения в общем репо внутри либо репликации wp, вы совершаете его там, и вы можете вернуть его обратно к внешней, пустой версии обычного, и вытащить его в другом репо второго репо. Это просто регулярное репо, но его клоны живут внутри репозиториев wp. В ваших репозиториях wp вы скажете, какую версию вы хотите прямо сейчас, сначала проверив правильную фиксацию внутри общего репо, затем снаружи в репозитории wp, выполнив git add common
и git commit -m'Update common for feature X'
. Это создает фиксацию в репозитории wp, которая просто сохраняет хэш коммита в общем подмодуле.
Когда вы проверите эту фиксацию в репозитории wp позже, она проверит код wp, а также соответствующую фиксацию в общем репо. В основном вы можете отслеживать, какая версия общего репо находится в определенное время. Это приятно по нескольким причинам. Во-первых, вам не нужно получать последние данные в конкретном репо, если вы этого не хотите или нуждаетесь. Это также означает, что вы можете проверить предыдущую фиксацию в общем репо, добавить ее и зафиксировать в этом репозитории wp, а затем работать против этого более старого, сколько вам нужно. Это немного большая работа, и вы должны помнить о совместной работе в wp и общих репозиториях. Я делаю это каждый день, но я слышал, что многие люди говорят, что это слишком много.
Вы также можете добавить и зафиксировать определенную версию общего с файлами в репозитории wp, так что, например, вы можете входить и реорганизовывать общие вещи, перепрыгивать и исправлять изменения в отношении этого рефакторинга в wp7, а затем добавлять общие и wp7 изменяется вместе в wp7 и обязывает их отслеживать оба изменения. Теперь, если вы откатите 1 фиксацию, общее репо также откатится до рефакторинга, так что вы можете иметь правильно действующий код при каждой фиксации.
Слияние не приводит к исчезновению ветки. Он создает новую фиксацию для текущей ветви, которая имеет текущую ветвь как первый родительский элемент, и объединенную в ветви как вторую родительскую. Новая фиксация - это содержимое как объединенного, так и любых разрешений конфликтов, которые вы должны были выполнить для завершения слияния. Филиал, который объединяется, не знает о слиянии, но продолжает существовать и все еще может быть проверен и совершен против, и это обычно делается. –
О, я, должно быть, испортил это в моей голове ... –