git 可以连续提交对文件所做的更改吗?

Can git continuously commit changes made to a file?

我一直在 git 从事一些相当小的项目,但我经常发现当我进行大量小的增量更改时,我懒得一直提交。所以,当我转身想弄清楚我的代码上次运行时,我意识到我没有保存提交。我想知道:有没有办法让 git 每次为我保存一个文件时都记录一次提交?我不关心提交消息;我只想记录我的更改。
当我用谷歌搜索这个问题时,我 运行 变成了 git stashing;它减少了我必须做的工作量,但并没有消除它。
如有任何建议,我们将不胜感激!

Git 不会自动提交,但如果您愿意,可以设置一个小脚本为您自动提交:

while sleep 60; do git commit -m 'Working'; done

这将每 60 秒自动提交一次 'Working' 消息。也有许多像 Guard 这样的工具可以监视您的文件系统并以您想要的方式执行某些保存操作,但我并不担心细节,因为...


现在解决方案已经解决,让我们谈谈您的问题,因为这没有帮助。与不保存最后的良好状态不同,您将拥有无限数量的部分状态供您查看,而不会指示您在什么时候做了什么。也许你会记得在达到里程碑时添加另一个提交,但你只是自动提交,所以没有什么要提交来标记它(在这种情况下使用 git commit --allow-empty),如果你记得这样做,你就不会不需要自动提交。

您真正想要做的是养成进行小而连贯的更改的习惯。这些可以让你回到之前的状态,但也可以作为面包屑,向你未来的自己和任何可能与你共事的人描述你的思维过程。如果每个都写一个good commit message,那就更好了。

定期提交的另一个好处是,它可以让您将工作分解成这些小的可提交块,这些块可以一路回溯到您设计代码的方式。我们总是听说模块化很好,单一职责原则很好;嗯,这是在你的过程中养成更好习惯的具体方法。

您会开始注意到,您的问题不仅可以分解为良好的提交,而且其中的一部分实际上是完全独立的。这些可以放在不同的分支上,让您可以根据需要或需要在它们之间切换,然后合并到 master 或彼此之间。这对审查您的代码的任何人都特别有帮助,因为他们可以一次阅读功能 A 和 B 以及错误 C,而不是在一个巨大的变更集中。

给自己设置一个计时器,让它每 5 分钟响一次(选择一个感觉频繁但又不会太频繁打断思路的时间段)。每当它发生时,问问自己是否完成了任务中的一个步骤,然后提交。由于在 ding 时您可能已经完成了其他事情的一半,因此请熟悉 git add --patch 以便您可以安排已完成的部分并继续处理未完成的部分。您学习和使用的越多 Git,您的效率就会越高,您花在浏览一连串细微变化上的时间就越少。