gpt4 book ai didi

git - Git 钩子(Hook)可以自动将文件添加到提交吗?

转载 作者:IT王子 更新时间:2023-10-29 00:42:12 24 4
gpt4 key购买 nike

我想使用 Git 中的提交前或提交后 Hook 将自动生成的文件添加到同一提交,具体取决于在该提交中修改的文件。我该怎么做?

我已经尝试将其作为预提交 Hook ,但没有成功:

#!/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

这成功地将它们添加到存储库中,但没有将它们添加到提交中。我还尝试在提交后 Hook 中使用最后两行 exec 行以及提交前检查,但也没有用。

最佳答案

由于 git add 在预提交中也不适合我,因此我遵循了 mark 使用 .commit 文件并将过程拆分为预提交和后提交的想法。

下面是一些代码,应该很容易理解

在预提交中:

  • Touch a file .commit or something. (be sure to add this to .gitignore)
#!/bin/sh 
echo
touch .commit
exit

在提交后:

if .commit exists you know a commit has just taken place but a post-commit hasn't run yet. So, you can do your code generation here. Additionally, test for .commit and if it exists:

  • add the files
  • commit --amend -C HEAD --no-verify (avoid looping)
  • delete .commit file
#!/bin/sh
echo
if [ -e .commit ]
then
rm .commit
git add yourfile
git commit --amend -C HEAD --no-verify
fi
exit

希望这能让 bash 知识很少的人更容易理解 mark 的想法。

关于git - Git 钩子(Hook)可以自动将文件添加到提交吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3284292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com