如何用git init替换更新版本的本地git钩子?

Rei*_*ica 9 git githooks

我和这个用户有完全相同的问题:

git init模板,替换修改后的钩子

我的全局git钩子中有一个新的模板文件.但是,原始模板文件已加载,因此git init不会覆盖.我在这里阅读相同,这似乎是正确的git行为:

来自http://www.cs.potsdam.edu/cgi-bin/man/man2html?1+git-init:

在现有存储库中运行git init是安全的.它不会覆盖已存在的东西.重新运行git init的主要原因是选择新添加的模板.

那么强制重新加载新的git模板钩子的好方法是什么?我在许多git repos中有许多钩子,在几台计算机上并被各种用户使用.最实用的方法是让用户运行一个特定的命令,而不是告诉他们先删除钩子然后再运行git init命令.有办法做到这一点吗?

Von*_*onC 5

最实用的方法是让用户运行特定的命令,而不是告诉他们先删除钩子,然后再运行 git init 命令

在这种情况下,一种可能的方法是向这些用户分发一个脚本(您可以在每个存储库中对该脚本进行版本控制)。他们不会直接
执行该操作git init,而是调用该脚本:

  • 取下钩子
  • 打电话给 git init --template=

但请注意您与 --temaplate 选项一起使用的路径。
的相对pathname给予“ git init --template=<path> <repo>”应该是相对于目录“ git init”中被调用,但它而不是被相对库,已使用Git 2.22.1(Q2 2019)做出修正。

请参阅Nguy?n Thái Ng?c Duy ( ) 的commit e1df7fe(2019 年 5 月 10 日(由Junio C Hamano合并-- --commit 35d7715,2019 年 7 月 25 日)pclouds
gitster

init:使--template路径相对于$CWD

期间git-init我们chdir()到了目标目录,但是--template没有调整。
所以它相对于目标目录而不是当前目录。

如果它证明这将是确定的,但--templategit-init.txt 没有提及这种行为。
将其更改为相对于$CWD,这更加直观。