我读过一次 git commit消息应该使用命令式现在时,例如“为x添加测试”。我总是发现自己使用过去时,例如“为x添加测试”,这对我来说自然而然。
这是John Resig最近提交的内容,其中显示了两个消息:
在操作测试中调整更多jQuery设置结果。还确定了预期测试结果的顺序。
有关系吗?我应该使用哪个?
我读过一次 git commit消息应该使用命令式现在时,例如“为x添加测试”。我总是发现自己使用过去时,例如“为x添加测试”,这对我来说自然而然。
这是John Resig最近提交的内容,其中显示了两个消息:
在操作测试中调整更多jQuery设置结果。还确定了预期测试结果的顺序。
有关系吗?我应该使用哪个?
Answers:
当前时态,命令式提交消息的偏好来自Git本身。从Git存储库中的Documentation / SubmittingPatchs:
描述您在命令式情绪中的更改,例如,“使xyzzy做frotz”而不是“ [此补丁]使xyzzy做frotz”或“ [I]将xyzzy做frotz”,就好像您是在向代码库发出更改其命令的命令一样行为。
因此,您会看到很多以这种风格编写的Git提交消息。如果您在团队或开源软件上工作,那么每个人都坚持那种风格以保持一致性会很有帮助。即使您正在从事一个私人项目,并且您是唯一会看到git历史的人,使用命令式心情还是有帮助的,因为它会养成良好的习惯,与他人合作时会受到赞赏。
rebase
或者cherry-pick
在这种情况下,可以在其原始上下文之外使用提交。结果,提交消息应独立编写,而不希望读者查看任何周围的提交消息。当您挑选补丁时,应用“修复快速排序算法”或“排序:提高性能”而不是“修复错误#124”或“修改排序以提高性能”更有意义。
您的项目几乎应该总是使用过去时。无论如何,项目应始终使用相同的时态以保持一致性和清晰度。
我理解其他一些争论使用当前时态的论点,但它们通常不适用。以下要点是目前时态写作的常见论点,以及我的回答。
这是要使用现在时的最正确的理由,但只能使用正确的项目样式。这种思维方式将所有提交视为可选的改进或功能,您可以自由决定在特定存储库中保留哪些提交以及拒绝哪些提交。
如果您要处理的是真正的分布式项目,则此参数有效。如果要处理分布式项目,则可能正在开发一个开源项目。如果它真的是分布式的,那可能是一个非常大的项目。实际上,它可能是Linux内核或Git。由于Linux可能是导致Git传播并获得普及的原因,因此很容易理解为什么人们会认为它的风格是权威。是的,这两个项目的风格有意义。或者,通常,它可与大型的开源分布式项目一起使用。
话虽这么说,大多数源代码控制项目都不是这样。对于大多数存储库,这通常是不正确的。这是一种关于提交的现代思考方式:Subversion(SVN)和CVS存储库几乎无法支持这种类型的存储库签入。通常,集成分支会处理对不良签入的过滤,但通常不将其视为“可选”或“必备功能”。
在大多数情况下,当您提交到源存储库时,您正在编写日记条目,该日记条目描述了此更新的更改,以使将来的其他人员更容易理解更改原因。通常这不是可选的更改-项目中的其他人员必须合并或基于此更改。你不写日记,如“亲爱的日记,今天我满足一个男孩和他说我打招呼。”,而是你写“我遇到了一个男孩,他说我打招呼。”
最后,对于此类非分布式项目,一个人阅读提交消息的时间的99.99%是用于阅读历史记录的-历史记录以过去时态阅读。0.01%的时间将决定他们是否应该应用此提交或将其集成到其分支机构/存储库中。
不,我向您保证,曾经登录版本控制系统的大多数项目都具有过去时的历史记录(我没有引用,但考虑到当前时态参数自Git之后才是新的,这可能是对的)。以当前时态显示的“修订”消息或提交消息仅在真正分布的项目中才有意义-参见上面的第一点。
参见第一点。一个人将阅读提交消息的99.99%的时间用于阅读历史记录-历史记录以过去时态阅读。0.01%的时间将决定他们是否应该应用此提交或将其集成到其分支机构/存储库中。99.99%胜过0.01%
我从来没有见过一个很好的说法,说使用不正确的时态/语法,因为它更短。对于标准的50个字符的消息,您平均可能只保存3个字符。话虽如此,现在的平均时态可能会短几个字符。
票证可以写为当前正在发生的事情(例如,当我单击此按钮时应用程序显示错误的行为),或者将来需要做的事情(例如,文本需要编辑人员审阅)。
历史记录(即提交消息)被写为过去所做的事情(例如,问题已解决)。
我在365git上写了更完整的描述。
祈使现在时的用法是需要一点时间来习惯的。当我开始提到它时,它遇到了阻力。通常按照“提交消息记录我所做的事情”的思路。但是,Git是一个分布式版本控制系统,可能有很多地方可以进行更改。而不是写说明您所做的事情的消息;将这些消息视为执行提交操作的说明。而不是提交标题:
Renamed the iVars and removed the common prefix.
有一个这样的:
Rename the iVars to remove the common prefix
哪个告诉某人应用提交将做什么,而不是您做了什么。另外,如果查看存储库历史记录,您还将看到Git生成的消息也以这种时态编写-“合并”而不是“合并”,“变基”不是“变基”,因此以相同的时态进行书写可使内容保持一致。一开始感觉很奇怪,但是确实有意义(可以在申请时提供证明),并最终变得自然。
说了这么多-这是您的代码,即您的存储库:因此,请设置您自己的准则并坚持使用。
但是,如果您确实决定采用这种方式,那么
git rebase -i
使用reword选项将是一件好事。
有关系吗?人们通常足够聪明,可以正确地解释消息,如果不是,那么您可能就不应该让他们访问您的存储库!
它是由你决定。只需根据需要使用提交消息即可。但是,如果不在时间和语言之间切换,会更容易。
如果您是团队成员,则应进行讨论并确定。