在提交之前运行脚本并在此提交中包含更新?

Yu *_*Hao 6 git githooks

我编写了一个脚本,Readme.md通过扫描源代码生成文件(用于GitHub).每次在我进行新提交之前,我都会手动运行此脚本进行更新Readme.md.如果这项工作自动完成,肯定会更好.

目前我正在使用pre-commitgit hook,它只能部分工作.该Readme.md文件被更新,但更新不是这个承诺的一部分.我必须将它包含在下一次提交中.

有没有办法运行此脚本并使更新成为此提交的一部分?

Bla*_*kus 6

根据这个 SO thread (Can a Git hook automatically add files to the commit?)git add不会在使用最新版本的 git 的预提交钩子上工作。

作为一种解决方法,您可以使用 pre-commit 和 post-commit 钩子来生成您的Readme.md然后在您使用 post-commit 钩子提交后提交它,然后用您的修改第二次提交。

不是我的想法,按照原始解释的链接。

@bitluck在我链接的线程上回答:

触摸一个文件 .commit 什么的。(一定要将此添加到 .gitignore)

#!/bin/sh 
echo 
touch .commit 
exit
Run Code Online (Sandbox Code Playgroud)

如果 .commit 存在,你就知道一个提交刚刚发生,但是一个 post-commit 还没有运行。因此,您可以在此处生成代码。此外,测试 .commit 以及它是否存在:

  • 添加文件
  • commit --amend -C HEAD --no-verify(避免循环)
  • 删除 .commit 文件

    #!/bin/sh
    echo
    if [ -a .commit ]
    then
      rm .commit
      git add yourfile
      git commit --amend -C HEAD --no-verify
    fi
    exit
    
    Run Code Online (Sandbox Code Playgroud)