В общем, если у вас есть большое количество отладочных коммитов, они не делают хорошей истории. Что может быть полезно, так это либо изменить ваши коммиты с помощью git commit --amend
, как вы предложили, либо объединить их sh вместе с помощью интерактивного перебазирования.
То, как вы выполняете такое squa sh, заключается в запустите git rebase -i BASE
, где BASE
- это фиксация перед теми, которые вы хотите объединить sh вместе. Затем вы получите список таких коммитов:
pick 92a28ece5a commit 1
pick 5878fe6a98 commit 2
pick 402864eaa3 commit 3
pick d124692e2f commit 4
Вы измените строки pick
на fixup
во всех коммитах, кроме первого, сохраните и выйдите из редактора, и они ' Все будет объединено в одно целое. Если вы используете squash
вместо fixup
, Git предложит вам объединить сообщения коммитов вместо их отбрасывания.
Есть еще более простой способ сделать это - использовать git commit --fixup COMMIT
или git commit --squash COMMIT
, которые создают исправление, или squa sh фиксирует данную фиксацию (что в данном случае, вероятно, будет фиксацией 1). Затем вы можете запустить git rebase -i --autosquash BASE
, а Git автоматически пометит эти коммиты как squa sh или фиксации исправлений и переместит их в нужное место.
В идеале каждый коммит - это независимое логическое изменение, в котором все тесты проходить. Вы можете использовать fixup или squa sh коммиты, чтобы внести изменения в старые коммиты в вашей ветке, а затем скомбинировать sh их вместе в конце. Конечный продукт будет выглядеть так, как будто вы никогда не совершали ошибок в своей серии и для начала написали идеальный код.
Вероятно, вы также захотите иметь приличные сообщения о фиксации, для которых Git документация полезна. Хорошее описание ваших изменений полезно как для других разработчиков, так и для вас в будущем. Я часто задавался вопросом, почему я сделал определенные изменения через шесть месяцев после этого, и в этот момент работа, которую я проделал, написав хорошее сообщение о фиксации, окупается безмерно.
Если вы ищете например, Git и Linux имеют такие практики и, как правило, являются отличными примерами такого подхода.