Когда вы объединяете две ветви, Git рассматривает три местоположения: две головки (в данном случае ветви master
и welcome
) и основа объединения , которая обычно является точкой в котором ветви разветвляются.
Когда происходит слияние, Git по существу смотрит на каждую сторону независимо и сравнивает ее с базой слияния и определяет, что изменилось. Git затем применяет оба набора изменений в результате.
Если одна сторона изменена, а другая нет, Git включает изменения. Таким образом, если в тот момент, когда ваши ветви были разветвлены, файл был пуст, то в результате слияния будет содержаться содержимое файла. Если обе стороны вносят изменения в одну и ту же область, возникнет конфликт слияния, и вам необходимо его разрешить. Нет способа избежать этого, поскольку Git не знает, что вы хотите сделать в этом случае.
Если вы хотите проверить это и посмотреть, что произойдет в вашем случае, вы можете создайте временную ветвь из master
и объедините в нее welcome
и посмотрите, как будет выглядеть результат:
$ git checkout master
$ git checkout -b temp
$ git merge welcome
Если вы попали в конфликтующее состояние и не хотите продолжать, вы можете запустить git merge --abort
, чтобы вернуться туда, где вы были.