2016-03-04 3 views
13

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

*master 
user_story_1 

user_story_1 имеет запрос открытый тянуть.

Теперь я пытаюсь создать новую ветку user_story_2, где я могу продолжить работу, которую я оставил в user_story_1. Как я могу сделать это в Git, не вступая в конфликт или не влияя на мое ожидающее слияние?

ответ

27

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

  1. Open Прицепные Запрос на user_story_1:

    * (user_story_1) 
        * 
    /
    * (master) 
    * 
    * 
    
  2. Создать новую ветку user_story_2, основанный на user_story_1:

    $ git checkout -b user_story_2 user_story_1
    * (user_story_1, user_story_2) 
        * 
    /
    * (master) 
    * 
    * 
    
  3. Работа по новому отделению:

    * (user_story_2) 
        *  
        * (user_story_1) 
        * 
    /
    * (master) 
    * 
    * 
    
  4. Прицепные Запрос получает слиты:

    * (user_story_2) 
        *  
    * | (master) 
    |\| 
    | * (user_story_1) 
    | * 
    |/ 
    * 
    * 
    * 
    
  5. Удалить старую ветку:

    * (user_story_2) 
        *  
    * | (master) 
    |\| 
    | * 
    | * 
    |/ 
    * 
    * 
    * 
    
  6. Rebase новый филиал на master:

    * (user_story_2) 
        *  
    /
    * (master) 
    |\ 
    | * 
    | * 
    |/ 
    * 
    * 
    * 
    
+1

Что произойдет, если первая ветвь отклоняется? – Narayon

+2

Я обычно переустанавливаю 'user_story_2' на' master': 'git rebase --onto master user_story_1 user_story_2' - может привести к конфликтам, если две ветви не полностью независимы. – alextercete

4

Создайте новую ветку от мастера для каждой вашей истории/особенностей.

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

У вас возникнут конфликты, нет никакого способа обойти это. Однако вы хотите разрешить конфликты в своем филиале; не в мастер. Таким образом, вы можете протестировать свою ветку после разрешения конфликтов до, объединив ее в мастер.