Git钩子能否自动将文件添加到提交中?

101
我想在Git中使用预提交或后提交钩子来添加一个自动生成的文件到同一次提交中,具体取决于该次提交中修改的文件。我该如何操作?
我已经尝试过将其作为预提交钩子使用,但没有成功:
#!/bin/sh
files=`git diff --cached --name-status`
re="<files of importance>"
if [[ $files =~ $re ]]
then
  echo "Creating files"
  exec bundle exec create_my_files
  exec git add my_files
  exec git commit --amend -C HEAD
fi

这成功地将它们添加到仓库中,但并没有将它们添加到提交中。我还尝试了使用最后两行执行代码在提交后钩子中与预提交检查一起使用,但是也没有用。


4
你需要从这段代码中删除 exec (参见 man sh)。在 exec 之后,任何 shell 命令都无法被执行,因为 exec 覆盖了当前进程,即用于解释命令的 shell。 - Martin Jambon
11个回答

-2

我在 pre-commit hook 中也遇到了同样的问题。我修改了一个文件并提交了,但是它却提交了之前的文件而不是更新后的文件。通过在 pre-commit hook 中添加以下 git 命令,问题得到了解决。

git add $file

注意: $file 是要添加的文件。


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