Какую ветвь нужно проверить перед интеграцией с помощью слияния / слияния сквоша / ребазирования? - PullRequest
0 голосов
/ 08 октября 2019

Я новичок в GIT и понимаю основы git add, commit, branch, merge, squash merge, rebase.

Однако я запутался в ветке, которую нужно проверить перед интеграцией веток(используя слияние / сквош слияния / перебазирования). Предполагая, что у меня есть разработка ветки и ветки feature1. Ветвь Feature1 содержит, скажем, 2 коммита с момента ветки от ветки Develop. Между тем, ветвь разработки также получила 2 коммита после создания ветки feature1. Теперь я запутался в том, как решить, какую ветку оформить, прежде чем выполнять слияние / слияние сквош / ребазирование. Я сталкивался с некоторыми статьями, проверяющими разработку и затем делающими git merge (или merge squash или rebase) feature1. Некоторые говорят иначе, а некоторые говорят обоим. Любое руководство, которое поможет четко обдумать это, будет полезно.

Для примеров ниже я привел возможные варианты.

Пример 1 (объединение):

Вариант 1:

разработка git checkout

функция git merge1

Опция 2:

функция git checkout1

разработка git merge

получил оформление заказа

функция git merge1

Пример 2 (перебазирование):

Опция 1:

функция проверки git1

разработка git rebase

разработка git checkout

функция git merge1

Опция 2:

функция git checkout1

разработка git rebase

разработка git checkout

функция git rebase1

Опция 3:

разработка git checkout

функция git rebase1

1 Ответ

2 голосов
/ 08 октября 2019

Я предполагаю, исходя из имен, что develop будет похоже на ваш master, то есть вы создаете функции в feature1, feature2 и т. Д., И все это объединяется в develop.

В этом случае вы должны оформить develop, а затем при develop выполнить:

 git merge feature1 

Если возникнут какие-либо конфликты, вам будет предложено их разрешить (IntelliJ IDE имеет действительно полезную функциюдля этого). После разрешения конфликтов вы завершаете слияние с другим коммитом.

Перебазировка предназначена для сценария, в котором вы хотите добавить коммиты из определенной ветви «поверх» коммитов из другой ветви.

Например, у вас есть следующие коммиты в хронологическом порядке (по убыванию):

    feature1 - commit D 
    develop - commit C
    feature1 - commit B
    develop - commit A

Если вы хотите, чтобы коммиты из develop применялись к базе кода раньше, чем коммиты из feature1, вы можете перебазироватьfeature1 on develop.

В этом случае вы извлекаете feature1 и затем запускаете:

git rebase develop

Вам также необходимо разрешить конфликты, если они есть, тогда вы можете git add Снова файлы и git rebase --continue для завершения перебазирования.

После этого журнал фиксации будет выглядеть так:

    feature1 - commit D 
    feature1 - commit B
    develop - commit C
    develop - commit A

Даже если коммит B старше коммита C, он будетприменяется после, из-за перебазирования.

Затем вы можете объединиться с develop, чтобы ввести там коммиты feature1.

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