2016-10-12 9 views
4

У меня есть ветвь с функциями test. Я внесла свои изменения и внес свои изменения в эту ветку. Тем временем мой отзыв master был изменен (предположим, что у него было больше коммитов от других разработчиков).Сброс после запроса Pull

Перед тем, как направить мои изменения в удаленную ветку, я сделал git rebase, а затем нажал мои изменения и создал запрос Pull.

Для моего запроса на тягу было несколько комментариев, которые мне нужно исправить.

После фиксации я увидел, что моя ветка master была обновлена. (Предположим еще некоторые коммиты от других разработчиков).

В любой момент, причина слияние master на test отрасли является то, что: там может быть сценариями, в которых изменения в мастер должны быть интегрированы и протестировать приложение с помощью этой функции филиала

В этой ситуации, у меня есть 2 вопроса.

  1. Как я могу объединить/перебазироваться новые изменения master на моем test ветви без слияния совершить в моей test отрасли? Таким образом, у меня будут оба мои предыдущие коммиты, которые являются частью запроса Pull и нового коммита, который является исправлением комментариев Pull Request.

  2. Как слить/переустановить master на test и добавить новую фиксацию к моему существующему предыдущему фиксации, чтобы у меня всегда была одна фиксация в моем PR?

+1

Вы используете rebase по какой-либо конкретной причине вместо слияния? Почему проверка 'test' и запуск' git merge master'? –

+0

Rebase, чтобы избежать коммита слияния – Rams

+0

Хорошо, вместо этого вам стоит подумать об использовании 'merge -ff', если это единственная причина. –

ответ

3

Прежде всего, определите, нужны ли вам новые изменения от master, которые необходимо интегрировать в свою ветвь. Возможно, вы можете игнорировать новые изменения с master. Если они не конфликтуют с вашими изменениями в test, то это самая легкая вещь, и разработчик все равно сможет объединить ваш PR.

Вы можете легко убедиться в этом, проверив страницу GitHub PR. Если вы получите сообщение «невозможно автоматически слить», вам нужно будет использовать одно из следующих решений.


Стандартный способ включает добывающие изменения без слияния является просто перебазировать снова:

git checkout test 
git rebase master 

Поскольку это переписывает историю, вам нужно будет принудительно нажим:

git push --force-with-lease 

Ваш PR будет обновляться всеми вашими коммитами и теперь будет включать новые фиксации на master в своей истории.

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

Если вы не хотите, чтобы перебазироваться, ваши другие варианты:

  • Merge master в test, но вы заявили, вы не хотите, чтобы это сделать.
  • git cherry-pick любые новые коммиты на master. Это имеет недостаток дублирования этих коммитов в вашем филиале.
  • Сделайте сквош-слияние master на test: git merge --squash master. Это похоже на значение cherry-pick, но создает только одно коммит.
+0

Спасибо @Scott Я попробую решение и обновление. – Rams

+0

Причина переустановки или слияния не связана с тем, что git говорит, что «PR может быть объединен». Могут быть сценарии, в которых необходимо интегрировать изменения в master и тестировать приложение с помощью этой ветки функций. – Rams

+0

@Rams. Ах, ладно. Это веская причина. Вы должны, вероятно, [изменить] (// stackoverflow.com/help/editing) ваш вопрос, чтобы упомянуть об этом. –