Будет ли разница для Git Объединить ветвь объекта с мастером Сравнить с мастером для объекта - PullRequest
1 голос
/ 11 марта 2020

Я намеревался объединить новые функции (в ветке Feature) в ветку Master. Я пошел дальше, чтобы объединить Feature в Master. Тем не менее, я обнаружил, что у Мастера не было строки. Однако, если я объединю Мастер в Feature, а затем Feature обратно в Master, линия сохраняется в Master. У меня вопрос, есть ли разница в слиянии Feature в Master и Master в Feature? Спасибо

Дополнительная информация, горячие исправления были добавлены в Мастер после того, как функция была извлечена из Мастер. Следовательно, это слияние Feature в «Мастер-2».

Ответы [ 2 ]

2 голосов
/ 11 марта 2020

Существует разница между слиянием ветви X в Y и слиянием ветви Y в X, поскольку слияние применяет различия между исходной ветвью и целевой ветвью.

Git объединение объединит несколько последовательностей коммитов в одну объединенную историю. В наиболее частых случаях слияние git используется для объединения двух ветвей.

https://www.atlassian.com/git/tutorials/using-branches/git-merge

Если ваша ветвь объекта началась с мастера и создал файл A:

  • Объединение ветви объекта в master (git merge feature-branch from master) добавит файл A в master, заканчивая обеими ветвями, равными ветви объектов (с файлом A).
  • Слияние мастера с ветвью объектов (git merge master из ветви объектов) удалит файл A из ветви объектов, в результате чего обе ветви будут равны главной ветви (без файла A).

Если мастер обновляется другой веткой, вы должны использовать git rebase master (из ветви функций), чтобы обновить ветвь функций новыми изменениями в мастере.
Вы можете принять rebase перед объединением как часть вашего Gitflow.

Перебазирование - это процесс перемещения или объединения последовательности коммитов в новый базовый коммит. Перебазирование наиболее полезно и легко визуализируется в контексте рабочего процесса ветвления элемента.

https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase

2 голосов
/ 11 марта 2020

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

Когда вы выполняете слияние git из Feature Feature в Master , вы получаете все изменения из Feature Branch в Master.

Таким образом, результат будет следующим:

  • Ветвь элемента не изменяется.
  • Мастер получает все изменения из ветви элемента .

Когда вы выполняете слияние git от Master до Feature Feature , вы получаете все изменения от ветки Master до Feature Feature (вы перехватывает все изменения от мастера к этой ветви, чтобы установить его в актуальном состоянии).

Итак, результат будет:

  • Мастер не делает t change.
  • Ветвь функций получает все изменения от Master.

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

Ветви функций должны о небольших функциях, если вы работаете над веткой функций, которая не объединяется через день, также хорошо выполнить запрос выборки от master (ну, это должно быть разработано в случае, если вы следовали gitflow) в эту ветку, чтобы обновляйте его и не допускайте возможных конфликтов слияния в будущем.

Но в любом случае я рекомендую вам следовать gitflow . Вы должны работать с ветвями разработки и функций, а master следует обновлять только после завершения выпуска. И, если вы не работаете в одиночку, слияния к развиваются и к master должны быть в форме запроса на слияние / запроса на слияние, чтобы некоторые ваши коллеги могли проверить ваш код.

...