Git — добавление к сообщению о предстоящей фиксации

#git

#git

Вопрос:

Я ищу способ добиться следующего рабочего процесса:

  1. Я вношу небольшое изменение в свой код
  2. Я добавляю текст, описывающий предыдущее изменение кода, к сообщению, которое будет прикреплено к моей следующей фиксации
  3. Повторяйте шаги 1 и 2, пока не будете готовы к фиксации
  4. Фиксация с автоматическим прикреплением полного текста сообщения (возможно, с возможностью добавления окончательного текста к сообщению)

РЕДАКТИРОВАТЬ: Сообщение будет применяться только к одной фиксации. Это позволило бы вам постоянно добавлять к вашему сообщению о предстоящей фиксации.

В настоящее время лучшим решением является фиксация первого изменения, а затем фиксация — изменение при каждом последующем изменении и модификация предыдущего сообщения.

Комментарии:

1. Я проголосовал за переход на Stack Overflow.

2. На самом деле собирался это сделать, но подумал, что получу много голосов за повторный перенос сюда…

3. Разве у git нет отдельного push-шага для передачи всех ваших изменений в репозиторий? Вы можете выполнять фиксации в своем локальном репозитории с любой степенью детализации, которую вы хотите (фактически повторяя шаги 1 и 2), а затем выполнить push, когда будете готовы (это ваш шаг 4).

4. Я определенно мог бы зафиксировать —изменить , а затем каждый раз изменять сообщение. Это хорошая идея?

5. @Jack Я больше думаю о многих локальных фиксациях, за которыми следует одно нажатие.

Ответ №1:

Почему бы не изменить ваш «шаг 3» на просто «фиксацию»? Лучшая часть git заключается в том, что она позволяет — даже поощряет — множество небольших, добавочных коммитов в ваш локальный репозиторий.

Комментарии:

1. Хорошо, я понимаю, о чем вы говорите. Я предполагаю, что это сводится к созданию небольших коммитов. В противном случае я буду использовать решение —amend, если потребуется. Спасибо!

Ответ №2:

Если вам когда-нибудь понадобится использовать git bisect для отслеживания ошибки, вы будете рады небольшим коммит.

С другой стороны, если изменения действительно тривиальны, например, вы выполняете по одному в минуту, часто упускаемое из виду решение — просто оставить окно GUI открытым и добавить строки в текстовую область сообщения о фиксации.

Ответ №3:

Вы можете объединить несколько небольших коммитов в один, используя интерактивную перебазировку. Смотрите http://book.git-scm.com/4_interactive_rebasing.html для описания и примера.

По сути, вам нужно фиксировать ваши изменения одно за другим в отдельные коммиты, а затем упаковать (или раздавить) их в один, как только вы закончите. Поскольку это изменяет историю, это следует выполнять только в вашем локальном репозитории до того, как коммиты были отправлены.