La razón más importante para realizar confirmaciones frecuentes, pequeñas y significativas es ayudar a comprender la historia del código. En particular, es muy difícil entender cómo ha cambiado el código si es difícil generar diferencias comprensibles.
La opción 1 ofusca el historial de cambios que ha realizado, pero de lo contrario no causará ningún problema.
La opción 2 ofusca el historial de cambios que ha realizado, posiblemente algo menos que la opción 1, pero podría causar otros problemas para usted u otros si asumen o concluyen que las confirmaciones son distintas, por ejemplo, pueden fusionarse en otras ramas de forma independiente. A menos que haya una razón práctica sólida por la que se prefiere esto a la opción 1, es menos ideal.
La opción 3 es la mejor, todo lo demás es igual, pero si, como ha descrito en otra parte, hacerlo requeriría cantidades de tiempo "extremas" o incurriría en otros costos significativos, tendrá que sopesar esos costos con los beneficios esperados de creando compromisos más limpios.
De acuerdo con la información que ha proporcionado, optaría por la opción 1. ¿Quizás debería configurar recordatorios para que confirme los cambios?
Creación de prototipos y reescritura
Otra consideración a tener en cuenta, especialmente a la luz de su nota sobre ser el único programador, y mi sospecha de que está trabajando en una base de código relativamente nueva, es que probablemente sea bueno desarrollar diferentes hábitos con respecto a cometer cambios para cuando estamos creando prototipos de código nuevo en lugar de mantener o ampliar el código existente. Probablemente no haya una división terriblemente aguda entre los dos, pero creo que sigue siendo una distinción útil.
Cuando esté creando prototipos de código nuevo, confirme cada vez que desee guardar sus cambios, casi con seguridad en una rama, pero tal vez en un proyecto separado. O tal vez incluso simplemente trabajar fuera del control de versiones por completo. En su lugar, puede concentrarse en reunir evidencia sobre la viabilidad de varias hipótesis o diseños que está considerando. A menudo escribo prototipos pequeños usando diferentes herramientas, por ejemplo, LINQPad en lugar de Visual Studio para el código C #.
Cuando haya validado una hipótesis o diseño en particular, vuelva a escribirlo en su proyecto principal, idealmente en una rama, y realice los compromisos pequeños y significativos que ayudarán mejor a la comprensión de los demás (incluido el futuro) en cuanto a la naturaleza de los cambios estás haciendo