从当前目录制作 git 钩子 运行

Make git hooks run from current directory

假设我有一个 GIT 回购“MyRepo”和一个子文件夹“代码”,例如:

MyRepo
  |-- .git
        |-- hooks
              |-- pre-commit
        |-- <other stuff>
  |-- Code
        |-- code.java
        |-- <other files>

我做 cd MyRepo/Code,然后做一些更改,做一个 git commit -m "yada yada",然后预提交挂钩 运行s。唯一的问题是它在 MyRepo 中 运行s。我希望预提交挂钩到我当前所在目录中的 运行,在本例中为 Code。我怎样才能做到这一点?

作为这个问题的扩展,有没有办法让我所有的 git 挂钩都以这种方式运行?

挂钩和别名是 运行,您在工作树中的当前路径作为 GIT_PREFIX 变量传入,因此您的挂钩可以 cd $GIT_PREFIX 或根据需要附加它。

。 . .我看到这没有记录,除了很久以前的一些发行说明,我发现它是通过推理类似它必须存在的东西并将 declare -p ${!GIT_*} 放在钩子中,运行 从子目录中,然后检查 Git 历史记录中的 GIT_ 变量。