Bash自动补全和Git提交--message

8
我在命令行中使用Git。我经常在Git分支中开发新功能,这些分支以与Jira问题(维基百科:JIRA)相关的名称命名,例如,为Jira票证“NEW-123”命名为“new-123”的分支。
我有一个本地的git prepare-commit-msg钩子,它将通过从Jira获取Jira票证的主题来创建提交消息。例如,“完成#NEW-123:酷炫的新功能”。
然而,我更喜欢直接从命令行提交: git commit -m“完成#NEW-123:酷炫的新功能” 我希望仅通过按[Tab]键即可创建引用的提交消息。
我知道bash完成机制(Bash:可编程完成入门)。但如何与现有的命令完成一起使用(git在bash中具有出色的完成)?我可以“链接”完成吗?
还是我需要重新编写git完成函数(也许通过向我的自定义函数添加钩子)?

4
在提交信息时请更加注意,不要全部自动化。如果以那种方式自动化,历史记录看起来就会很丑陋。相反,我建议编写个人信息,并手动添加到JIRA的链接。还请注意,在提交信息后,可以编辑JIRA中的文本、标题和标题。如果您为某个工单编写代码时出现了错误,您会开一个新的工单进行错误修复吗?或者扩展或编辑原有的工单?(两种都可以) - hek2mgl
另外,我通常在功能分支上进行多次提交,并在将它们合并到主分支之前进行变基。结果通常是一个添加了新功能的单个提交,但如果有必要,也可以是两个或更多个提交。在我看来,当每个提交都是一个自包含的补丁时,这是有意义的。 - hek2mgl
1
我支持@hek2mgl的观点;我认为自动化提交消息并不是一个好的实践。你应该在提交消息中描述代码的更改,以及在提交消息正文中添加警告、注释和解释更改。你可以在正文中链接到问题,以保持更改与功能请求/错误讨论等之间的联系。 - Fuad Saud
1
我以前已经实现过这个功能,但是我创建了一个 commit-msg 钩子来查看是否已经插入了票号,如果没有,它会自动插入。 - onionjake
请注意,如果您永远不需要编辑消息,则可以执行 git config --add core.editor true。请注意,在这种情况下,您可能希望定义例如 git config --add alias.tagc 'tag -c core.editor $EDITOR' 或者更好的是一个 shell 别名。 - strugee
1个回答

0
你可以创建一个包装脚本,然后为其编写bash自动补全。这样在命令行中,你就可以使用git-commitcommit来代替git commit作为你的命令,同时你将完全掌控自动补全功能。(我已经将commit作为git commit的别名,因为我经常这么做。)
尽管如此,我同意以上所有评论,如果你在我的团队中这样做,我会感到失望;你应该花时间编写提交日志并在其中添加一些详细信息,而不是试图在一行中完成它们。但这取决于你自己。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接