Синхронизация двух веток GIT, которые отличаются только парой файлов - PullRequest
1 голос
/ 17 марта 2010

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

После внедрения новой функции в master, я хотел бы повторить эти изменения и дополнения в другие ветви с наименьшими усилиями. Какой рекомендуемый подход здесь?

Ответы [ 2 ]

2 голосов
/ 17 марта 2010

У вас есть три варианта:

  • merge: интересно, если все изменения мастера должны быть видны в одной ветви, но это не всегда так

  • cherry-pick: применить только определенный коммит к ветви

  • rebase: лучшее решение , если ваша ветвь еще не была нажата : вы воспроизводите коммит вашей ветки поверх мастера

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

Если ваши ветви не сделаны из одного в другое:

---o             branch B1
    \
     ----o       branch B2
          \
           ----o branch B3

В этом случае вы можете:

  • только объединить изменения в наиболее конкретную ветку (B3 здесь), как рекомендуется в этом FAQ
  • закончите работу над B3
  • затем выполнить слияние с родительской ветвью B2 (если эволюции на B2 не произошло, на самом деле это слияние ускоренной перемотки вперед)
  • повторите для B1 (то есть: закончите свою работу на B2, git checkout B1, git merge B2)
0 голосов
/ 18 марта 2010

Обычно, когда я исправляю какую-то важную вещь в одной ветви (может даже быть главной), и если я хочу, чтобы это же исправление было реплицировано в другую ветку, я делаю git checkout my_latest_feature и git merge --no-commit master

Никогда не пробовал cherry-pick , но я думаю, это лучший способ, я думаю, поскольку cherry-pick только объединит это конкретное изменение, а git merge --no-commit master попытается получить все дерево (даже другое фиксирует помимо последнего исправления).

Я всегда ненавижу любую команду, которая вмешивается в историю. Вот почему я никогда не ребаз

Обновление: только что нашел похожий вопрос: Как скопировать коммиты из одной ветви в другую?

...