Первое, что я хочу пояснить, это то, что имена ветвей - это просто псевдоним для определенного коммита.git - это то, что git работает, когда вы тянете, нажимаете merge и так далее.Каждый коммит имеет уникальный идентификатор.
Когда вы выполняете $ git merge, то на самом деле происходит то, что git пытается перенести вашу текущую ветку на коммит, на который включена ссылочная ветвь (другими словами, оба имени ветки указываютв тот же коммит.) Этот сценарий является самым простым для git, так как нет нового коммита.Подумайте о том, как хозяин прыгает на лилипад, на котором сидит ваша ветвь.Можно установить флаг --no-ff, и в этом случае git создаст новый коммит независимо от того, были ли какие-либо конфликты кода.
В ситуации, когда между двумя ветвями вы находитесь в конфликтах кодапри попытке слияния (обычно две ветви, история коммитов которых имеет общий коммит в прошлом), ускоренная перемотка вперед не сработает.git все еще может автоматически объединять файлы, если одна и та же строка не была изменена обеими ветками в конфликтующем файле.в этом случае git объединит конфликтующие файлы для вас и автоматически зафиксирует их.Вы можете просмотреть, как это сделал git, выполнив $ git diff --cached.Или вы можете передать флаг --no-commit в команду merge, которая оставит измененные файлы в вашем индексе, которые вам нужно будет добавить и зафиксировать.Но вы можете $ git diff этих файлов, чтобы посмотреть, что изменится слияние.
Третий сценарий - когда возникают конфликты, которые git не может разрешить автоматически.В этом случае вам нужно будет объединить их вручную.На мой взгляд, это проще всего сделать с помощью слияния, например, слияния с араксисом или p4merge (бесплатно).В любом случае, вы должны сделать каждый файл один за другим.Если слияние кажется застрявшим, используйте $ git merge --continue, чтобы подтолкнуть его вперед.Git должен сказать вам, если это не может продолжаться, и если так, то почему бы и нет.Если вы чувствуете, что в какой-то момент вы приостановили слияние, вы можете выполнить $ git merge --abort, и любое слияние будет отменено, и вы сможете начать все сначала.Когда вы закончите, каждый объединенный файл будет измененным файлом, который необходимо добавить и зафиксировать.Вы можете проверить, где находятся файлы со статусом $ git.Если вы еще не зафиксировали объединенные файлы.Вы должны сделать это, чтобы завершить слияние.Вы должны завершить слияние или прервать слияние, прежде чем сможете переключать ветви.