Мне нравится думать о кодировании как о скалолазании в этом контексте. Вы немного лезете, а затем кладете якорь в скалу. Если вы когда-нибудь упадете, последний якорь, который вы посадили, - это точка, которая вас обезопасит, так что вы никогда не упадете больше, чем на несколько метров. То же самое с контролем источника; Вы немного кодируете, и когда вы достигаете несколько стабильной позиции, вы фиксируете ревизию. Если вы когда-нибудь ужасно потерпите неудачу, вы всегда можете вернуться к этой последней ревизии, и вы знаете, что она стабильна.
Тем не менее, если вы работаете в команде, обычно нужно убедиться, что все, что вы делаете, завершено, имеет смысл, строится чисто и не ломает чужие вещи. Если вам нужно внести более значительные изменения, которые могут помешать работе других людей, создайте ветку, чтобы вы могли совершать изменения, не мешая никому другому.
Это также зависит от системы SCM, которую вы используете. Распределенные системы обычно делают слияние и разветвление безболезненными и быстрыми, и вы можете выполнять их локально; это означает, что вы должны совершать много, и вставлять / объединять, когда вы проделали значительную работу. В централизованных системах, таких как svn или cvs, фиксация затрат обходится дороже и влияет на всех. Ветвление частично решает эту проблему, но поскольку это происходит на сервере, оно может быть мучительно медленным, а объединение может быть громоздким. Так что с централизованными SCM часто существует более осторожная культура, когда вы делаете обязательства только после того, как проделали значительный объем работы.
Что касается дополнения: Пожалуйста, пожалуйста, не делайте этого. Строки кода, количество коммитов, количество найденных / исправленных ошибок и т. Д. - все это очень плохие показатели качества или даже количества.