2016-05-02 3 views
0

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

Я просто хочу иметь обновленный PR, который содержит только мои изменения, как в аналогичной ситуации ранее меня попросили «как-то» очистить мой PR. Как это возможно?

+0

Да, он также будет содержать слияние. Вы можете попробовать сделать вишневый захват –

ответ

1

Если я делаю переадресацию сначала от моего локально зарегистрированного мастера и затем принудительно нажимаю свою ветку PR, будет ли PR также содержать изменения из слияния?

Если вы переустанавливаете свой «локально проверенный мастер» и нажимаете, PR будет обновляться только с вашей локальной версией мастера.

Вы можете проверить мастер и вытащить его с начала координат, а затем переустановить на origin/master после git fetch, и тогда у вас будет ветвь, содержащая только новые коммиты (новые изменения включены в историю филиалов).

Я просто хочу иметь обновленный PR, который содержит только мои изменения, как в аналогичной ситуации ранее меня попросили «как-то» очистить мой PR. Как это возможно?

У вас есть два варианта - rebase и merge - вы должны смотреть на документацию для каждого из них, но вот быстрое сравнение каждого:

  • Rebase: будет перемотать ветвь, сброс на то, что вы наберете, а затем снова примените свои изменения. Это означает, что, когда ваш филиал не обновлен, rebasing применит новые изменения от источника до ваших изменений. Вы разрешаете конфликты слияния в начале rebase (в истории, возможно, в коммиты) и всякий раз, когда требуется, когда история повторно воспроизводится.
    • Плюсы: чистая история коммитов
    • Минусы: вам придется заставить толчок, многие люди не любят это делать. При переустановке хэши Commit будут меняться.
  • Merge: будет применять новые изменения от происхождения сверху ваших изменений. Это означает, что ваши изменения будут существовать в истории, тогда новые изменения будут впереди. Вы разрешаете конфликты только один раз, на конец вашей истории фиксации (как правило, проще).
    • Против: Это, и хеши фиксации не меняются.
    • Плюсы: Не требуется принудительный толчок.

Вообще говоря, если кто-то на GitHub попросит вас обновить вашу ветку, то они, вероятно, предполагая, что вы перебазироваться, таким образом она хранится чище с точки зрения истории фиксации.

Сжатие ваших коммитов вместе является распространенным запросом у владельцев репозитория на GitHub. Это возможно только при перезагрузке, однако GitHub now offers the ability to squash commits when merging pull requests, поэтому многие владельцы репозиториев не будут беспокоиться о том, чтобы просить вас сквош, поскольку они могут сделать это сами сейчас.

Here's a good comparison каждого метода от Atlassian.

1

Если вы перекомпилируете свою работу поверх текущего ведущего мастера, а затем выполните принудительное нажатие, новая ветвь PR заменит старую. Таким образом, старые коммиты исчезают из PR, и новые коммиты есть, готовые к объединению.

+0

Спасибо. Так что обновление от мастера тоже будет там? Должен ли я закрыть текущий PR и создать новую ветку/PR? – Bruckwald

+1

Почему? Просто сила-толчок, и все будет хорошо. Если вы создали PR из своего 'foo' против' master' и 'master', вы изменили свой 'foo' на новый' master', исправите конфликты и принудительно нажмите и снова PR просто содержит только ваши изменения. – Vampire

Смежные вопросы