Git стиль фиксации: все измененные файлы одновременно или по одному за раз?

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

У меня нет проблем с тем, что происходит сейчас, но я планирую поместить свой код в GitHub, и я хочу, чтобы это было легко понять.

Мне интересно, что делают остальные, которые используют git. Кроме того, если бы вы могли прочесть это для меня. Я новичок в git, и я использую TortoiseGit и gitk в Windows.

Ответы

Ответ 1

Когда совершать и что совершать - это искусство, и нет черно-белых правил. Это, как говорится, есть привычки, которые легче понять, чем другие.

В целом, я думаю, вы должны оптимизировать свои коммиты для понимания - если вы вернетесь и прочитаете diff для фиксации, можете ли вы понять, что вы сделали в результате изменений?

Если вы хотите быть более конкретным, вот длинный список того, что я думаю, и не делает:

  • Не выполняйте после каждого небольшого изменения - каждая строка изменена, каждый файл изменен и т.д.
  • Не работайте целый день и делайте одно гигантское коммит в конце дня.
  • Разделяйте коммиты для разных функций - например, разработка функции foo против исправления ошибки # 2.
  • Сделайте отдельную фиксацию для перемещения/переименования файлов, потому что проще Git отслеживать этот путь.
  • Подумайте об оптимизации для возвращаемости: если вам не нравится изменение, которое вы сделали, легко ли его отменить даже после того, как новые изменения были сведены сверху?

Ответ 2

"Легко понять" означает также:

  • фиксирует представление не только "контрольной точки" (например, если бы они были сделаны после каждой модификации файла), но когерентное состояние кода
  • easy to git bisect (т.е. каждая фиксация должна представлять собой изменение в задаче, которая компилирует и добавляет эволюцию или новую функцию, а не "фиксация контрольной точки", что приведет к тому, что git bisect не удастся слишком быстро).

См. " понимание рабочего процесса Git: для этого вам нужно различать:

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

Итак, обратите внимание на "быструю перемотку" слияния, которое Git использует по умолчанию: не забудьте очистить историю веток, которые вы собирается сливаться таким образом в публичные отрасли.