Почему `git merge <branch> --squash` сделать коммит?

При обычном слиянии, например, git merge <branch>, git создает коммит слияния и обновляет HEAD текущей ветви для этой фиксации.

При выполнении сквош-слияния, например, git merge <branch> --squash, однако, он не делает коммит, говоря (при чистом слиянии):

Squash commit -- not updating HEAD
Automatic merge went well; stopped before committing as requested

В чем причина этого? Мне кажется, это неожиданная разница между обычным слиянием и слиянием сквоша. Для меня было бы более интуитивно понятно, если бы только разница между обычным слиянием и слиянием сквоша заключалась в том, что слияние сквоша совершает слияние.

4 голоса | спросил Luke 22 Maypm18 2018, 22:52:32

2 ответа


0
Такого рода вопрос о том, почему действительно нужно задавать тому, кто написал команду в первую очередь;только они действительно знают.Базовая реализация является ленивой: она проходит по тому же пути кода, что и обычное слияние, но пропускает запись файла ---- +: = 0 =: + ---- , а затем завершает работу рано, чтобы избежать прохождения кода, который может сделатькоммит слияния.Если вы используете опцию ---- +: = 1 =: + ---- , код проходит почти по тому же пути.Фактически, управляющей переменной для этого является ---- +: = 2 =: + ---- , и установка ---- +: = 3 =: + ---- очищает ---- +: =4 =: + ---- как будто вы бежали с ---- +: = 5 =: + ---- .Если ---- +: = 6 =: + ---- не очистить ---- +: = 7 =: + ---- , похоже, существующий путь будет жаловаться на сбой автоматического объединения.Так что это может быть просто лень.
ответил torek 23 Mayam18 2018, 00:33:41
0
Что за этим стоит?Черновое сообщение фиксации слияния будет содержать все ваши сжатые сообщения из другой ветки.Что-то вроде этого:Обычно вы хотите настроить это сообщение перед фиксацией.Если вас устраивает сообщение по умолчанию, вы можете сделать:
ответил sergej 22 Maypm18 2018, 23:42:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132