Как мне сделать мою git историю более последовательной? - PullRequest
0 голосов
/ 29 мая 2020

Мне нужно использовать сторонний API для разработки. Я пишу код для загрузки в git, загружаю код на сторонний интерфейс, а затем выполняю код из API. Это означает очень большое количество git коммитов. Я пытался сделать свою историю коммитов более последовательной, чтобы, когда модуль будет готов, я показывал все изменения, внесенные в код в процессе. Следует ли мне вносить поправки в каждую из моих отладочных коммитов? Я использую визуальную студию, если это помогает.

1 Ответ

1 голос
/ 30 мая 2020

В общем, если у вас есть большое количество отладочных коммитов, они не делают хорошей истории. Что может быть полезно, так это либо изменить ваши коммиты с помощью 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 имеют такие практики и, как правило, являются отличными примерами такого подхода.

...