我正在运行预提交挂钩,可能会将新文件添加到提交中。但是,虽然这在技术上按预期工作,但提交消息的git status
部分不反映此更改。
例如,我在提交中添加了文件x
,因此我的git status
预先提供了以下内容:
repo>git status
On branch development
Your branch is up-to-date with 'origin/development'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: x
现在,假设我的git hook确定文件y
也需要提交。虽然之后我可以看到y
确实已经为提交暂存,但我的空提交消息(在预提交挂钩执行之后)给出了以下内容:
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch development
# Your branch is up-to-date with 'origin/development'.
#
# Changes to be committed:
# new file: x
#
即使我期待
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch development
# Your branch is up-to-date with 'origin/development'.
#
# Changes to be committed:
# new file: x
# new file: y
#
确实,在中止提交后,我得到以下git status
:
repo>git status
On branch development
Your branch is up-to-date with 'origin/development'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: x
new file: y
换句话说,如何在预提交钩子中“刷新”提交消息的自动生成部分?
编辑: 我的预提交钩子目前看起来如下。
#!/bin/sh
gulp --production
vendor/bin/phpunit
rc=$?
if [[ $rc != 0 ]] ; then
echo "phpunit failed - commit denied"
exit $rc
fi
git add public
gulp
执行诸如编译SCSS之类的操作,并可能将内容移动到我的公共/目录中。如果发生这种情况,我想将这些文件添加到提交中,因此最后是git add public
指令。
因此,即使这些文件做被添加到提交中,提交消息的git status
部分也不会反映这一点。
答案 0 :(得分:0)
似乎git commit-msg中的git status部分是在pre-commit-hook运行之前创建的。因此虽然它不会在COMMIT-MSG中显示,但它仍然会被提交。这似乎是git的一个小bug。