【发布时间】:2015-06-25 06:30:05
【问题描述】:
我在命令行上使用 Git。我经常在 git 分支中开发新功能,这些新功能以与它们相关的 Jira 问题 (Wikipedia: JIRA) 命名,例如Jira 票“NEW-123”的分支“new-123”。
我有一个本地 git prepare-commit-msg 钩子,它将通过从 Jira 获取 Jira 票证的主题来创建提交消息。例如。 “已完成 #NEW-123:很酷的新功能”。
不过,我更喜欢直接从命令行提交:
git commit -m "Finished #NEW-123: Cool new feature".
我想通过按 [TAB] 创建引用的提交消息。
我知道 bash 完成机制 (Bash: An Introduction to Programmable Completion)。但是如何将它与现有的命令完成一起使用(git 在 bash 中具有出色的完成)?我可以“链接”完成吗?
或者我是否需要重新编程 git 完成函数(可能通过向我的自定义函数添加挂钩)?
【问题讨论】:
-
对提交消息更加个人化。并非一切都应该自动化。如果你以这种方式自动化它们,历史看起来很丑陋。相反,我会写一条个人消息并手动添加指向 JIRA 的链接。另请注意,在提交消息后可以编辑 JIRA 中的文本、标题和标题。如果您为票证所做的代码中出现错误怎么办。您会为错误修复开一张新票还是延长甚至编辑票? (两者都有可能,当然)
-
另一件事,我通常在一个特性分支上做很多提交,并在我将它们合并到 master 之前对它们进行 rebase。结果通常是添加一个功能的单个提交,但如果有意义的话,它也可以是两个或更多提交。恕我直言,当每个提交都是一个自包含的补丁时,这是有道理的。
-
我第二个@hek2mgl;我不觉得自动化提交消息是一个好习惯。您应该始终在提交消息中描述代码中的更改,以及警告、cmets 和对提交消息正文中更改的解释(没有标题)。您可以随时链接到正文中的问题,以保持更改与功能请求/错误讨论等之间的联系。
-
我之前已经实现了这个,但是我创建了一个
commit-msg钩子,而不是标签完成,它会查看票号是否已经插入,如果没有,它会插入它。跨度> -
请注意,如果您永远不需要编辑邮件,则只需执行
git config --add core.editor true。请注意,在这种情况下,您可能需要定义例如git config --add alias.tagc 'tag -c core.editor $EDITOR'或者,更好的是,一个 shell 别名。
标签: git bash-completion