如果您正在阅读此书,则可能是您已经知道git是什么,并且还可以使用任何基于票证的软件,例如Jira。 在本文中,我将向您展示您正在使用的工单ID如何自动添加到提交消息中,假设您使用的是类似于feature/ABC-1234-Feature-testing
分支名称。
为此,您将使用git hooks 。
吊钩
根据Git Hooks的说法:
Git挂钩是Git在事件(例如,提交,推送和接收)之前或之后执行的脚本。 Git钩子是内置功能-无需下载任何内容。 Git挂钩在本地运行。
现在您已经知道需要什么,只需在.git/hooks
文件夹下创建一个新文件。 将其命名为prepare-commit-msg
。
复制下面的代码,并将其粘贴到新创建的文件中。
#!/bin/bash
# List the branches that don't apply bellow
if [ -z " $BRANCHES_TO_IGNORE " ]; then
BRANCHES_TO_IGNORE=(master develop staging test )
fi
# Pick the current branch name and check if it is excluded
BRANCH_NAME=$(git symbolic-ref --short HEAD)
BRANCH_IGNORED=$( printf "%s\n" " ${BRANCHES_TO_IGNORE[@]} " | grep -c "^ $BRANCH_NAME $" )
# Remove the unnecessary parts
TRIMMED=$( echo $BRANCH_NAME | sed -E -e 's:^(\w+)\/([^-]*-[^-]*)-.*:\2:' -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' )
# If it isn't excluded, prepend the part that interests us to the given commit message
if [ -n " $BRANCH_NAME " ] && ! [[ $BRANCH_IGNORED -eq 1 ]]; then
sed -i.bak -e "1s/^/ $TRIMMED - /" $1
fi
创建文件后,您需要为其赋予适当的权限。 这可以通过执行chmod +x prepare-commit-msg
。
如果您想查看它的运行状况,只需重新提交并输入所需的任何消息即可。 给定上面的分支名称,您现在应该看到类似以下内容:
commit 976f4354779a824e5edfd851857b26c9bcfd3e14 (feature/ABC-1234-Feature-testing)
Author: Rafael <email@example.com>
Date: Tue Jul 23 17:35:25 2019 +0100
ABC-1234 - This is a testing message
全局应用您的更改
现在,我已经向您展示了如何改善提交消息,您希望将条件应用于计算机中的其他所有存储库,对吗? 我将向您展示如何实现它。
第一步是创建一个文件夹,其中将包含所有挂钩。 我正在使用我创建的此存储库,但您可以使用任何您喜欢的存储库。 拥有自己的文件夹后,执行以下命令:
git config --global init.templatedir '~/projects/git-hooks-templates'
在其中应该有另一个名为hooks
文件夹,这是我们将放置git hooks的位置。
现在文件夹结构正确,您可以将上面创建的文件复制到~/projects/git-hooks-templates
目录中(在本示例中,您可能会有所不同)。 之后要执行的命令是:
chmod a+x ~/projects/git-hooks-templates/hooks/prepare-commit-msg
现在您已完成所有设置。 每次创建或克隆新存储库时,都会根据您正在处理的分支在提交消息后附加工单ID。
From: https://hackernoon.com/enhancing-your-git-commit-messages-2a299295o