Ответ 1
Различия
Эти параметры существуют для отдельных целей. Ваш репозиторий заканчивается по-другому.
Предположим, что ваш репозиторий выглядит так после того, как вы закончили разработку в ветке темы:
--squash
Если вы извлекаете мастер, а затем git merge --squash topic; git commit -m topic
git merge --squash topic; git commit -m topic
, вы получите это:
--no-ff --no-commit
Вместо этого, если вы делаете git merge --no-ff --no-commit; git commit -m topic
git merge --no-ff --no-commit; git commit -m topic
, вы получите это:
Сокрытие микрокоммитов
Если вы действительно хотите скрыть (я имею в виду удаление из вашего репозитория) свои --squash
, используйте --squash
. Потому что, как вы можете видеть на изображениях выше, вы на самом деле не скрываете свои микро-коммиты, если не сдавливаете. Более того, вы обычно не толкаете свои тематические ветки в мир. Темы веток для темы, чтобы стать зрелым.
Если вы хотите, чтобы в вашей истории были все ваши микро-коммиты, но оставьте их в другой линии разработки (зеленая линия на изображениях выше), используйте --no-ff --no-commit
. Но, пожалуйста, помните, что а) это не ветка, и б) ничего не значит в Git, потому что это просто еще один родитель вашего коммита.
Пожалуйста, обратитесь к Git Branching - Что такое ветка, если вы действительно хотите понять.