Git - Как эффективно делиться кодом между ветками темы? - PullRequest
1 голос
/ 30 января 2011
  • Простое объединение ветвей дает нежелательный код.
  • Сбор вишни не помогает, так как релевантный код разлился за несколько коммитов
  • rebase?не уверен в этом

1 Ответ

2 голосов
/ 30 января 2011

Для общего набора файлов, действительно общих для двух ветвей, одним решением действительно является rebase (до слияния), но это предполагает:

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

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

Оттуда легко:

  • перебазировать эти коммиты в «общую» ветку
  • объединить эту ветку в вашей текущей ветке темы (чтобы вернуть все эти изменения)
  • объединить ту же самую «общую» ветку с другой веткой «theme2» (чтобы она имела ту же общуюэволюции)

См. git: как объединить ветки, сохранив некоторые наборы изменений исключительно для одной ветви?

t1a--t1b--ca--cb--t1c  # topic1 with some common commits in it 'ca' and cb'
t2a--t2b               # second topic branch

rebase --interactive в topic1 ветви:

t1a--t1b--t1c'--ca'--cb'  # topic1 with some common commits in most recent position
t2a--t2b               # second topic branch

rebase --onto (или просто сбросьте HEAD из topic1 и checkout -b common, если ветвь common еще не существует), как показано в " объединении ветвей при сохранениинекоторые наборы изменений, исключающие одну ветку?"

t1a--t1b--t1c'  # topic1 without any common code
ca''--cb''      # common branch
t2a--t2b        # second topic branch

Объединить общие изменения в обеих ветках темы:

t1a--t1b--t1c'--c1  # topic1 with a commit with common code evolutions
ca''--cb''          # common branch
t2a--t2b--c1'       # second topic branch with same common code evolutions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...