Слияние удаленных веток в git - PullRequest
5 голосов
/ 31 октября 2011

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

  1. Мастер - где происходит моя разработка.
  2. Поставщик - Где я периодически синхронизируюсь с исходным проектом.
  3. Интеграция- Где я хочу объединить (Мастер) и (Продавец) вместе.

Моя идея рабочего процесса заключается в том, чтобы синхронизация выполнялась автоматически (поскольку это в основном ускоренная перемотка), а интеграция должна быть наполовину ручной (поскольку она требует слияний и исправлений).У меня есть первая часть (синхронизация), но я не могу понять, какие команды на самом деле нужно выполнить, чтобы интегрировать Master и Vendor в интеграцию.

Это вывод gitbranch -a :

* integration
  master
  vendor
  remotes/origin/HEAD -> origin/master
  remotes/origin/integration
  remotes/origin/master
  remotes/origin/vendor

Как мне перейти с этой точки к следующему:

  1. Синхронизировать это рабочее пространство с удаленным репозиторием?
  2. Объединитьпоставщик и мастер интеграции?
  3. Вернуть интеграцию обратно в удаленный репозиторий?

И, очевидно, если у меня что-то не так в рабочем процессе, я бы хотел услышать это.

1 Ответ

2 голосов
/ 31 октября 2011

Хотя ветвь integration не является строго необходимой (вы можете напрямую интегрировать vendor в master, переместив master поверх vendor), это может быть полезно.

Интеграция ветки A в ветку B может быть выполнена:

  • слияние A в B (но это означает, что любая ваша текущая разработка в B находится в режиме ожидания до разрешения любого конфликта слияния и повторного запуска всех тестов)
  • перебрасывание B поверх A (git rebase A), но это изменит историю B.

Я бы перебазировал integration поверх Vendor, разрешив там любой конфликт, а затем слил integration в master, сохранив master историю линейной.

...