В чем разница между `-squash` и `-no-ff-no-commit`?
какой из них следует использовать для скрытия микрокоммитов?
- единственная разница между git merge --squash
и git merge --no-ff --no-commit
отрицание других родителей?
1 ответов
различия
эти параметры существуют для отдельных целей. Ваш репозиторий заканчивается по-другому.
предположим, что ваш репозиторий выглядит так после того, как вы закончите разработку в ветке темы:
--squash
если вы checkout master, а затем git merge --squash topic; git commit -m topic
, вы получите это:
--no-ff --no-commit
вместо этого, если вы делаете git merge --no-ff --no-commit; git commit -m topic
, вы получаете это:
скрывает микро-нарушает
если вы действительно хотите спрятаться (я имею в виду удалить из вашего репозитория) ваши микро-коммиты, используйте --squash
. Потому что, как вы можете видеть на приведенных выше изображениях, вы не скрываете свои микро-коммиты, если вы не раздавите. Более того, вы обычно не подталкиваете свои тематические ветви к миру. Ветви темы предназначены для темы, чтобы стать зрелыми.
если вы хотите, чтобы ваша история, чтобы все ваши микро-коммиты, но оставьте их в другой линии развития (зеленая линия на изображениях выше), используйте --no-ff --no-commit
. Но, пожалуйста, помните, что a) это не ветвь, и b) на самом деле ничего не значит в Git, потому что это просто еще один родитель вашей фиксации.
пожалуйста, обратитесь к Git ветвление-что такое ветвь если вы действительно хотите разобраться.