git flow ветви зависимости - PullRequest
       8

git flow ветви зависимости

2 голосов
/ 27 января 2012

У меня вопрос по протоколу ветвления git.Я начинаю ближе знакомиться с командами git, но все еще довольно плохо знаком с процессом.

Я работаю над проектом на основе git с еще одним человеком.Мы добавили большую функцию, поэтому мы изолировали нашу работу в «Branch_1».Другой разработчик начал работать над кучей дополнений в ветке Branch_1 под названием Branch_2.Другой разработчик поработал над Branch_2, а затем временно перешел к другим задачам.Мне нужно было продолжить и расширить изменения, которые он сделал в Branch_2, поэтому я создал Branch_3 на основе Branch_2.

Рисунок 1

Branch_1
  |_______> Branch_2  (other developer working on)
                |________> Branch_3  (I'm working on)

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

Поэтому я думаю, что нужно оформить Branch_1, внести изменения для FIX, оформить Branch_2, объединить в Branch_1,затем извлеките Branch_3 и объедините изменения из Branch_2.Смотрите рисунок 2 ниже.

Рисунок 2

git checkout Branch_1
# make my changes
git pull origin Branch_1  # to pull in any other changes
git push origin Branch_1 

git checkout Branch_2
git pull origin Branch_2    # to pull in any other changes
git merge --no-ff Branch_1  # merge in branch 1 
git push origin Branch_2    # push to the remote repository  

git checkout Branch_3
git pull origin Branch_3    # to pull in any other changes
git merge --no-ff Branch_2  # merge in branch 2
git push origin Brach_3     # push to the remote repository 

Однако в этом случае меня интересует несколько вещей:

  1. Есть много шагов, которые нужно сделать.Получает много времени через некоторое время.Если я создаю Branch_4 на основе Branch_3 и Branch_5 на основе Branch_4, необходимо выполнить еще больше шагов.
  2. Чтобы продолжить работу над Branch_3 после внесения FIX, мне, в основном, нужно сделать коммиты в Branch_2 моего сотрудника, которые он может не реализовать.
  3. Для более сложных установок, я не могу оценить, что ответвляется от чего.Я мог бы сделать свою ошибку FIX to Branch_1 и объединить ее с моими коллегами Branch_2, но, возможно, мой коллега создал Branch_2 путем отделения от некоторой промежуточной ветви, такой как Branch_1a.ИСПРАВЛЕНИЕ не было бы правильно объединено с Branch_1a в правильном порядке.

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

1 Ответ

2 голосов
/ 27 января 2012

К сожалению, да. Если вы хотите интегрировать исправление во все ветви, вы должны либо сделать его один раз и объединить его повсюду, либо сделать исправление несколько раз (поддерживается cherry-pick). Если вы беспокоитесь о branch2 и о том, что вы делаете коммиты, о которых ваш коллега не знает, просто опустите branch2. Когда ваш коллега в конечном итоге объединяет его обратно с branch1 (что должно быть желаемым результатом, потому что секрет успешной работы с ветвями на самом деле снова объединяется), исправление будет автоматически включено. Если он отчаянно нуждается в исправлении, вы можете просто уведомить его, и он может объединить его сам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...