Работая в ожидании пиара
Я работаю над проектом, и я отправил свой первый запрос на извлечение, и пока я жду, я хочу продолжить работу над созданием моего проекта, исходя из того, что я работал над слиянием, которое еще не завершено. Прямо сейчас у меня есть:
*master
user_story_1
user_story_1
имеет открытый запрос на извлечение.
Сейчас я пытаюсь создать новую ветку user_story_2
где я могу продолжить работу, которую я оставил в user_story_1
, Как я могу сделать это в Git, не вступая в конфликт и не влияя на ожидаемое слияние?
2 ответа
Я предполагаю, что вы хотите начать новый user_story_2
ветвь на вершине работы, которую вы сделали в user_story_1
, Вот рабочий процесс, который я использую в этом сценарии:
Открытый запрос на извлечение для
user_story_1
:* (user_story_1) * / * (master) * *
Создать новую ветку
user_story_2
основанный наuser_story_1
:$ git checkout -b user_story_2 user_story_1
* (user_story_1, user_story_2) * / * (master) * *
Работа на новой ветке:
* (user_story_2) * * (user_story_1) * / * (master) * *
Запрос на объединение объединяется:
* (user_story_2) * * | (master) |\| | * (user_story_1) | * |/ * * *
Удалить старую ветку:
* (user_story_2) * * | (master) |\| | * | * |/ * * *
Перебазировать новую ветку на
master
:* (user_story_2) * / * (master) |\ | * | * |/ * * *
Мой предпочтительный рабочий процесс для этого:
- На ветке мастер,
git checkout -b user_story_1
, - Внести изменения в
user_story_1
, - Открытый PR для
user_story_1
, - На ветке
user_story_1
,git checkout -b user_story_2
, - Внести изменения в
user_story_2
, - однажды
user_story_1
объединяется с мастером, переключитесь наuser_story_2
и делатьgit rebase -i master
, - Это должно показать вам список коммитов на
user_story_2
что вы хотите включить в ребаз. Удалить несколько верхних коммитов, которые пришлиuser_story_1
, - Перебазирование должно завершиться чисто, если мастер не был обновлен с другими изменениями. Теперь у вас есть
user_story_2
перебазировал на мастера и только имея свои коммиты.
Создайте новую ветку от мастера для каждой из ваших историй / функций.
Перед объединением каждой ветви обратно, либо объедините мастер в эту ветку, либо переназначьте свою ветку на мастер. Последний имеет мои предпочтения, но в итоге результат тот же.
У вас будут конфликты, и тут нет пути. Однако вы хотите разрешить конфликты в своей отрасли; не в мастер. Таким образом, вы можете проверить свою ветвь после разрешения конфликтов, прежде чем объединить ее с master.