如果 git commit 消息以命令式编写,我该如何澄清尚未完成的工作? “不添加散列”或“没有/不添加散列”?

Posted

技术标签:

【中文标题】如果 git commit 消息以命令式编写,我该如何澄清尚未完成的工作? “不添加散列”或“没有/不添加散列”?【英文标题】:If git commit messages written in the imperative, how do I clarify what hasn't yet been done? 'Don't add hashing' or 'Didn't/Doesn't add hashing'? 【发布时间】:2015-02-22 22:13:59 【问题描述】:

我仍然不完全清楚 git 提交消息的编写方式。

我知道基本规则,但这一条让我很困惑。在我的实践项目中,我创建了一个登录系统和一个用户注册,但尚未在数据库中实现安全密码存储。它们仍然以纯文本形式存储索尼风格。我想在提交信息中记下这一点,但我发现自己陷入了一个奇怪的困惑,即如何在命令式中表达这一点。

有什么想法吗?

我个人认为,这应该包含在提交消息中,即使它是对提交中不包含内容的声明,因为它代表任何希望的人的重要信息使用通过查看更改可能不明显的代码。

【问题讨论】:

您好,欢迎来到 Stack Overflow。这个问题似乎是primarily opinion-based,因此不适合该网站。 google 上有很多关于这个话题的博文,也许你可以看看那些以获得指导。 好的,谢谢您的指导。我应该删除问题吗? 我认为这根本不是基于意见的。但它实际上是关于英语语法和/或表达(在特定上下文中),所以我认为它是题外话。 【参考方案1】:

提交消息告诉我们通过给定的提交添加到源代码中的内容。提交消息表示将应用于代码的更改集。

许多专家for example this article which 给出的指导方针提到有一个摘要行,然后是一个空白行,然后是对提交消息的描述。

要遵循的命令式规则仅适用于提交消息的第一个摘要行。提交消息的此摘要行仅提及如果将此提交应用于代码将进行哪些更改。写成祈使句是合乎逻辑的。

要提及的其他内容始终可以作为提交消息描述的一部分,您可以在其中写一两段提及任何内容,包括未实现的内容。 Git 提交是为了记录该 git 提交将添加哪些更改而编写的。其他架构决策和信息更适合其他文档,例如架构决策注册表、产品路线图、产品开发 wiki。如果提交消息中还需要其他信息,则应添加到消息的描述中。

【讨论】:

【参考方案2】:

我假设你正在尝试决定是否

 Don't add hashing      #1

 Didn't add hashing     #2a
 Doesn't add hashing    #2b

是必须的。这真的是一道英语语法题。但要回答这个问题,我们首先需要将缩略词转换回完整形式:

 Do not add hashing        #1
 (It) did not add hashing  #2a
 (It) does not add hashing #2b

其中第一个是指令或命令……告诉人们不要添加散列。这是必要的

后两个是关于提交的简单事实陈述。他们说提交没有或没有添加散列。这不是对任何人的指示或命令,因此不是必须的。 (“没有”或“没有”是正确的。这取决于您是在编写消息的人还是阅读消息的人的时间范围内解释消息。)

通过该分析,#1 和 #2 形式显然意味着提交消息中的非常不同的东西。你的提交信息应该表达的实际意思,这比它们应该符合一些风格规则或约定要重要得多。


然而……

我仍然不完全清楚 git 提交消息的编写方式。

关于该主题没有单一的权威权威。我的建议是不要为此流泪。做你觉得对的事。如果人们抱怨,请他们详细解释你做错了什么,并尝试学习。 (请记住,有些从不满意。)

【讨论】:

好分析,比我的回答更详细。 +1 不管怎样,这不是英语语法问题,而是 git 约定问题。我知道'不要添加'是适当的命令形式,但是很明显这在提交消息中听起来很荒谬。该问题旨在准确了解提交消息的样式指南的容忍度。不过,你两个都回答得很好。 @user3888177 - 谢谢。我刚刚更新了我的答案,说说出你的实际意思比任何风格约定更重要。但这也适用于“听起来很荒谬”。如果你写的东西听起来很荒谬,但它最好地表达了>>你 【参考方案3】:

一篇关于提交消息的好文章是How to Write a Git Commit Message。

它的第 5 条规则确实推荐using imperative mood。

命令听起来有点粗鲁;这就是我们不经常使用它的原因。但它非常适合 git 提交主题行。其中一个原因是 git 本身在代表您创建提交时使用命令式

就您的主题而言,一个简单的“不添加 xxx”就足以完成您提交的第一部分(“肯定陈述”,命令式)。

【讨论】:

啊,有道理。还回答了是否继续在提交消息的正文中使用命令式的问题。 对于有语法意识的人:“不加xxx”不是必须的。它只是对(否定的)事实的陈述。当务之急是“不要添加 xxx”。 @StephenC 我同意:我的观点是你不需要对消极部分使用命令式,只对积极部分使用。 @VonC 你回答了我本来想问的问题 git itself uses the imperative 是一个非常糟糕的论点。因此,如果 git 出于某种原因做错了,其他人也必须做错吗?正如伯特兰·罗素(Bertrand Russell)曾经说过的“即使每个人都同意,每个人都可能是错的。”我在这里错过了一个真正的论点,为什么命令式比替代性更好。【参考方案4】:

提交消息不应包含当前变更集中尚未实现的内容的注释。相反,它应该是;

简要总结更改本身(例如创建的登录系统),或者; 首先描述提示更改的任务(例如,允许用户登录)

【讨论】:

参考一些“官方”指南会很好。否则,请将此答案作为评论。 我应该澄清一下——最初的提交总结将是肯定的陈述“添加用户登录”。但是详细说明更改的前一段也写在命令式中(据我所知)。正是在这部分,我遇到了措辞上的困难。

以上是关于如果 git commit 消息以命令式编写,我该如何澄清尚未完成的工作? “不添加散列”或“没有/不添加散列”?的主要内容,如果未能解决你的问题,请参考以下文章

git commit 在一行中打印出消息

使用 git commit -a 和 vim

解决合并冲突后如何使用默认的 git commit 消息?

如何使用“$ git commit”在消息开头引用问题(gitlab,github)? [复制]

如何使用 husky 检查 git commit 消息格式?

推送后更改 git commit 消息(假设没有人从远程拉出)