为什么我应该使用Git提交消息的编辑器?

为什么我应该使用Git提交消息的编辑器?,git,Git,我感觉几乎每个人都使用一个编辑器(Vim、Notepad++,等等)来处理Git提交消息。为什么? 我发现键入-m和几个引号很容易,并且提供了一种简单的重做提交的方法(按向上箭头)。我想在编辑器中执行多行提交消息比较容易,但我很难说服同事编写任何消息 在编辑器中,您可以编写更长的消息,进行格式设置,如调整为80列等。也许您有一个用于复制和粘贴提交消息的模板。您可以在文本编辑器中执行这些操作。我首先开始学习vim,将它设置为Mercurial的默认编辑器;如果我想完成任何事情,它迫使我至少知道基本

我感觉几乎每个人都使用一个编辑器(Vim、Notepad++,等等)来处理Git提交消息。为什么?


我发现键入
-m
和几个引号很容易,并且提供了一种简单的重做提交的方法(按向上箭头)。我想在编辑器中执行多行提交消息比较容易,但我很难说服同事编写任何消息

在编辑器中,您可以编写更长的消息,进行格式设置,如调整为80列等。也许您有一个用于复制和粘贴提交消息的模板。您可以在文本编辑器中执行这些操作。

我首先开始学习vim,将它设置为Mercurial的默认编辑器;如果我想完成任何事情,它迫使我至少知道基本的命令。现在我一直在使用vim。

您提到了最重要的一点-长度。提交消息本质上应该始终是多行的。唯一的例外是琐碎的提交(例如“将版本号碰撞到X.X.X”)或没有冲突的合并(尽管即使如此,附加短日志也不是一个坏主意)。就这样一个事物的存在而言,一般的犯罪行为应该在主语之外有一两句话;有些甚至可以有段落。只要看看这张照片;它几乎可以保证是提交消息样式和长度的好例子

我意识到,说服他人编写好的提交消息可能很难,但这并不意味着你不能这样做——而且你可能会发现使用编辑器来编写这些消息更容易


(我在我的工作场所有着完全相同的经验。我的同事首先是工程师,其次是程序员,然后是版本控制用户……第三位会很慷慨。但你至少可以把工作做好!)

有些人有约定:

简短的(50个字符或更少)总结 变化

更详细的解释性文本,如有必要 必要的。把它包装到72左右 人物左右。在某些情况下, 第一行被视为 电子邮件的主题和其他内容 文本作为正文。空白行 将摘要与正文分开 是关键的(除非你省略了正文 完全);像rebase这样的工具可以 如果你把两者放在一起,你会感到困惑

将提交消息写入 现在时:“修复bug”而不是 “修正了错误。”这个约定匹配 提供由生成的提交消息 像git merge和git这样的命令 回复

后面是空白的段落 台词

-要点也可以

-通常项目符号使用连字符或星号,前面加一个
单个空格,中间有空行 两者之间,但这里的惯例各不相同

-使用悬挂缩进


祝你好运,不用编辑器就可以做到这一点。

正确的git提交消息几乎总是多行的。从

虽然不是必需的,但这是个好主意 以 单个短字符(少于50个字符) 总结变化的行,然后 通过一个空行,然后是一个 详尽的描述。转动的工具 提交到电子邮件,例如,使用 主题的第一行:第二行 而其余的提交则在 身体

如果您在获取任何提交消息时遇到困难,(请与系统管理员联系和/或)确保至少将GIT_EDITOR环境变量、core.EDITOR配置变量、VISUAL环境变量或EDITOR环境变量中的一个设置为有用的值


一个选项是创建您自己的“编辑器”,它会提示输入一个简短的(人们总是可以覆盖环境变量,或者像往常一样使用编辑器编写单行消息。如果你真的想强制执行这一点,而不是仅仅说服人们这符合他们自己的利益,那么这样做的方式就是一个钩子。至少,当有人推送单行提交消息时,打印一个响亮的警告。如果嘿,推送一打提交,都是一行消息,我认为你有权让推送失败。@Jefromi-如果人们故意覆盖环境变量以避免遵循策略,那么你就有一个更大的问题要处理!实际上,这是一个没有实际意义的问题-如果有人指定了git commit-m。我不知道为什么我没有立即意识到这一点。因此,如果人们只想写短消息,他们只会像往常一样继续使用
commit-m
,不会有任何收获。人们并不真的认为这是在逃避政策——他们认为这是在逃避额外步骤的烦扰,一个编辑,没有o找出要写的东西…这是一个相当大的问题,是的,但假设人们还没有写好消息,这是一个问题。git提交消息的vim语法高亮显示使用颜色来帮助您符合“50个字符的短摘要、空行、长摘要”标准。您不需要复制“n”粘贴模板,因为git支持提交消息模板(许多编辑器也支持模板)。没有看到好处。查看您的示例“git.git的日志”,它肯定很冗长,但大多数看起来都是多余的。当然,我不在git上工作。@Pat:肯定有一些冗余,但“大多数”?我可以阅读这些提交消息,并且在不看代码的情况下很好地理解每一条消息的含义。是的,如果你假设你已经理解了所有代码,并且可以立即阅读,那么整个提交消息是多余的…@帕特:我想我在那条评论中尝试了一些争论。这归结为一个事实这个文档是一个好主意。我们可以讨论到底有多少,但提交代表一组工作,对该工作的一些解释是必要的,对于任何复杂的东西,解释可能不超过50个字符。