【问题标题】:bash completion and git commit --messagebash 完成和 git commit --message
【发布时间】: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


【解决方案1】:

您可以有一个包装脚本,然后为此编写 bash 自动完成功能。然后在命令行上你将使用例如git-commitcommit 作为您的命令而不是 git commit,您将完全控制自动完成。 (我已经有commit 作为git commit 的别名,因为我经常这样做。)

不过,我同意上述所有 cmets,如果您在我的团队中这样做,我会感到失望;您应该花时间在您的提交日志上并在其中添加一些细节,而不是试图将它们放在一行中。但这取决于你。

【讨论】:

    猜你喜欢
    • 2010-11-30
    • 2015-01-18
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    相关资源
    最近更新 更多