进行频繁,小而有意义的提交的最重要原因是帮助理解代码的历史。特别是,如果很难生成可理解的差异,则很难理解代码的变化方式。
选项1混淆了您所做的更改的历史记录,但否则不会造成任何问题。
选项2掩盖了您所做更改的历史,可能比选项1少了一些,但是如果他们假设或以其他方式认为提交是不同的,例如可能可以独立合并到其他分支中,则可能给您自己或其他人造成其他问题。除非有很强的实际原因,为什么它比选项1更受青睐,所以它并不理想。
选项3是最好的,其他条件都相同,但是,如您在其他地方所述,如果这样做需要“极长时间”的时间或会导致其他重大成本,则您必须权衡这些成本与预期的收益。创建更清洁的提交。
根据您提供的信息,我选择选项1。也许您应该设置提醒以提示您进行更改?
原型设计和重写
需要记住的另一个考虑因素,尤其是考虑到您是唯一的程序员,以及我怀疑您正在开发一个相对较新的代码库时,养成在习惯于在您更改代码时养成不同习惯的习惯可能是个好习惯正在对新代码进行原型设计,而不是维护或扩展现有代码。两者之间可能没有十分清晰的区分,但我认为这仍然是一个有用的区别。
在制作新代码的原型时,几乎可以肯定在分支中,但也可以在单独的项目中,只要要保存更改就提交。或者甚至完全可以在版本控制之外工作。相反,您可以专注于收集有关您正在考虑的各种假设或设计的可行性的证据。我经常使用其他工具(例如LINQPad而不是Visual Studio for C#代码)编写小型原型。
验证特定的假设或设计后,请在您的主项目中(最好是在分支中)重写它,并进行有意义的小型提交,以最好地帮助他人(包括将来的您)了解更改的性质你在做。