Вопрос:
Недавно у меня были дебаты с коллегой, и он непреклонен в том, что как можно меньше совершается, из-за конфликтов слияния. Я утверждаю, что чем больше деталей вы используете, используя как можно больше коммитов, тем лучше.
Лучше ли иметь больше коммитов, или меньше, и почему?
Лучший ответ:
Если ваш коллега отговаривает много коммитов, потому что это почему-то вызывает больше конфликтов слияния, то это неверно, количество коммитов не имеет ничего общего с конфликтами слияния. Если ваш код будет конфликтовать при объединении ветки в другую, не имеет значения, имеет ли эта ветвь 1 фиксация или 1000, это приведет к конфликту в любом случае.
Это связано с тем, что в общем случае Git сравнивает состояние кода с конечной фиксацией на каждой ветки вместе с “лучшим” общим предком между ними (как определено алгоритм слияния). Любой посредник, заключенный между предком и фиксацией наконечника ветки, даже не рассматривается.
Тем не менее, когда вы делитесь своей историей с другими людьми, вам может потребоваться баланс между тем, чтобы ваши коммиты были достаточно подробными, чтобы быть полезными, но также достаточно редкими, чтобы представить ясную, легко понятную историю. Иногда все ваши потребности в филиале – это 1 фиксация, чтобы четко показывать историю изменений, а иногда вам может понадобиться больше. Так или иначе, ситуативно.
Если вы просто работаете в филиале в частном порядке, вы можете совершать так часто, как хотите, но хотите, потому что вы всегда можете переписать свою историю, чтобы быть более короткими и ясными позже, прежде чем делиться своими изменениями с другими людьми.
Ответ №1
Попробуйте и зафиксируйте один логический блок работы. Оба следующих сообщения о совершении являются плохой практикой:
Исправлено правописание в функции X (особенно когда последнее сделанное совершение было связано с X)
Обновлены файлы для функции X, удалены фиктивные файлы и добавлены еще несколько несвязанных файлов
Никто не мешает вам выполнять свою работу каждые пару минут или раз в неделю. Но если вы хотите получить чистую, читаемую историю, лучше совершать часто и связанные с сквошем коммиты в более значимые, прежде чем нажимать ваши изменения.
Ответ №2
Зафиксировать заранее, совершить часто. Хорошая статья по этой теме Сета Робертсона.
Я не понимаю страха перед аргументами о конфликтах слияния для того, чтобы совершать редко. Чем больше значение, тем больше вероятность того, что у вас возникнут конфликты слияния, и тем труднее их решить.