每当 HEAD 更改时的 Git 钩子(Hook)

标签 git githooks

我的目标是使一个(未跟踪的)文件与当前的 HEAD 提交哈希、分支和一些其他细节保持同步。我有一个可用的 git post-checkout Hook 来更新文件,但我希望 Hook 在 HEAD 更改时运行,无论是通过提交、 merge 还是其他可能的方式。

什么是确保我的钩子(Hook)在 HEAD 更改时运行的最简单方法?

详情

我生成的文件是一个 javascript 文件,它是静态服务网站的一部分。我们不依赖服务器端脚本,所以我们想在这里避免这种依赖。

应该运行的脚本如下:

#!/bin/sh

FILE=js/git-status.js

echo "// This file is autogenerated by a post-checkout hook. Your changes here WILL be lost." > $FILE

echo "GIT_BRANCH = '$(git rev-parse --abbrev-ref HEAD)';" >> $FILE
echo "GIT_COMMIT_HASH = '$(git rev-parse HEAD)';" >> $FILE
echo "GIT_COMMIT_TIME = '$(git log -1 -s --format=%ci HEAD)';"  >> $FILE

echo "Updated $FILE"

虽然我可以采取另一种方法,但我仍然希望得到原始问题的答案。

最佳答案

这似乎是不可能的(尽管请证明我错了),所以我采用了这种足够好的方法:我从多个 Hook 中触发脚本,这意味着它将运行大部分时间时间。

这些是我正在使用的钩子(Hook):

  • checkout 后
  • 提交后
  • merge 后
  • rebase 后

关于每当 HEAD 更改时的 Git 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27073690/

相关文章:

git - 对于 Git LFS,如何使用文件太大(>100mb)的 Git?

git - 如果特定文件发生更改,我如何自动收到警告?

git - 自定义 commitlint header 格式

用于检测推送的 Git 钩子(Hook) --mirror

gitk 和钩子(Hook)脚本

git - 推送到 Heroku 时出现 SSL 证书错误

带有 Visual Studio 2013 的 github - 由于未提交的更改而无法 pull

git - 在 Github Pages 上创建站点的暂存和生产版本

macos - 终端打开时显示 'No such file or directory'

bash - 从通过 post-receive 钩子(Hook)创建的 ssh session 调用时,导出不起作用