我read once git提交消息应该是强制性现在时,例如“为x添加测试”。我总是发现自己使用过去时,例如“虽然增加了对x的测试”,这对我来说更自然。
Here's a recent John Resig commit显示二合一消息:
在操作测试中调整一些jQuery set结果。还修复了预期测试结果的顺序。
重要吗?我应该使用哪种?
答案 0 :(得分:518)
现在时,命令式提交消息的偏好来自Git本身。来自Git回购中的Documentation/SubmittingPatches:
描述您在迫切情绪中的变化,例如: “让xyzzy做frotz” 而不是“[这个补丁]使xyzzy做frotz”或“[我]改变了xyzzy 做frotz“,好像你是在给代码库发号子来改变 它的行为。
所以你会看到很多以这种风格编写的Git提交消息。如果您正在团队或开源软件上工作,那么每个人都坚持这种风格以保持一致性会很有帮助。即使你正在从事一个私人项目,并且你是唯一一个能够看到你的git历史的人,但是使用强制性的情绪是有帮助的,因为它建立了良好的习惯,当你与他人合作时会受到赞赏。
答案 1 :(得分:330)
您的项目几乎总是使用过去时。在任何情况下,项目应始终使用相同的时态,以保持一致性和清晰度。
我理解其他一些论据主张使用现在时,但他们通常不适用。以下要点是用现在时写作的常见论据,以及我的回答。
这是人们想要使用现在时的最正确的理由,但只有正确的项目风格。这种思维方式将所有提交视为可选的改进或功能,您可以自由决定在特定存储库中保留哪些提交以及拒绝哪些提交。
如果您正在处理真正分布式项目,则此参数有效。如果您正在处理分布式项目,那么您可能正在开发一个开源项目。如果它真的是分布式的,它可能是一个非常大的项目。实际上,它可能是Linux内核或Git。由于Linux可能是导致Git传播和普及的原因,因此很容易理解为什么人们会认为它的风格是权威。是的,这两个项目的风格是有道理的。或者,通常,它适用于大型,开源,分布式项目。
话虽如此,源代码管理中的大多数项目都不会像这样工作。对于大多数存储库来说,它通常是不正确的。这是一种思考提交的现代方式:Subversion(SVN)和CVS存储库几乎不支持这种类型的存储库签入。通常,集成分支处理过滤错误签到,但这些通常不被视为“可选”或“可用的功能”。
在大多数情况下,当您提交到源存储库时,您正在编写一个日记条目,该条目描述了此更新的更改内容,以便将来其他人更容易理解更改的原因。它通常不是可选的变更 - 项目中的其他人需要合并或变更。你不写一本日记条目,比如“亲爱的日记,今天我见到一个男孩,而他对我说你好。”但你写的是“我遇见一个男孩,他对我说你好。“
最后,对于此类非分布式项目,一个人阅读提交消息的99.99%的时间用于阅读历史记录 - 历史记录以过去时态读取。 0.01%的时间决定是否应该应用此提交或将其集成到其分支/存储库中。
不,我向您保证,版本控制系统中记录的大多数项目都有过去时的历史记录(我没有引用,但它可能是正确的,考虑到现在的时态参数是新的,因为Git )。现在时的“修订”消息或提交消息只在真正的分布式项目中开始有意义 - 请参阅上面的第一点。
见第一点。一个人阅读提交消息的99.99%的时间用于阅读历史记录 - 历史记录以过去时态读取。 0.01%的时间决定是否应该应用此提交或将其集成到其分支/存储库中。 99.99%击败0.01%。
我从来没有见过一个好的论据,说使用不正确的时态/语法,因为它更短。对于标准的50个字符的消息,您平均只能保存3个字符。话虽如此,现在的时态平均可能会缩短几个字符。
门票被写成当前正在发生的事情(例如,当我点击此按钮时,应用显示错误的行为),或者将来需要做的事情(例如文本) 将需要编辑审核)。
历史记录(即提交消息)是作为过去完成的内容编写的(例如 已修复的问题)。
答案 2 :(得分:75)
我在365git上写了更全面的描述。
使用命令式,现在时态是需要一点点的 开始适应。当我开始提及它时,它被满足了 抵抗性。通常沿着“提交消息记录” 我做了什么”。但是,Git是一个分布式版本控制系统 哪里有可能有很多地方可以改变。宁 而不是写出说出你所做的事情的信息;考虑这些 消息作为应用提交的指令。 而不是提交标题:
Renamed the iVars and removed the common prefix.
有这样一个:
Rename the iVars to remove the common prefix
告诉别人应用提交会做什么,而不是做什么 你做到了。此外,如果您查看存储库历史记录,您将看到 Git生成的消息也是用这个时态写的 - “合并”不是“合并”,“重新基础”不是“重新基础”所以写在同一个 紧张使事情保持一致。起初感觉很奇怪,但确实如此 有意义(推荐可在申请时获得)并最终 变得自然。
说了这么多 - 这是你的代码,你的存储库:所以设置你的 自己的指导方针并坚持下去。
但是,如果你决定采用这种方式,那么
git rebase -i
就可以了 reword选项是一件好事。
答案 3 :(得分:22)
坚持目前的紧张命令,因为
答案 4 :(得分:15)
你在为谁写信息?并且该读者通常在提交之前或之后阅读消息吗?
我认为从这两个角度给出了很好的答案,我或许还没有提出每个项目都有最好的答案。分裂投票可能也表明了这一点。
即。总结一下:
该消息主要针对其他人,通常是在他们接受更改之前的某个时间点阅读:提出更改内容的建议将对他们现有的代码进行处理。
该消息主要是作为自己(或您的团队)的日记/记录,但通常从假设变更的角度阅读并回顾发现发生的事情。
无论如何,这可能会为您的团队/项目带来动力。
答案 5 :(得分:10)
重要吗?人们通常足够聪明,可以正确地解释消息,如果他们不是,你可能不应该让他们访问你的存储库!
答案 6 :(得分:6)
由你决定。只需使用提交消息即可。 但如果你不在时间和语言之间切换,那就更容易了。
如果你在一个团队中发展 - 应该讨论并修复它。