仅在新分支上的 Git post-checkout Hook

标签 git githooks

我正在尝试创建一个 git Hook ,它仅在 check out 新分支时才在 check out 后运行(即使用了 -b 标志)。我正在使用 post-checkout Hook 并尝试了各种技术来使其正常工作,例如检查 oldrev。

post-checkout 是我想要的钩子(Hook)吗?如果是这样,我应该在脚本中使用什么逻辑,以便 Hook 仅在 checkout 新分支时生效?

谢谢!

最佳答案

问题是找不到 Hook (可以使用 post-checkout Hook )。
就是检测刚刚创建了一个新的本地分支。

但是"new"与哪个分支相比? Detecting a "branch point"考虑到您不知道要考虑哪个起始分支,这很棘手。

您也可以check the reflog以验证该分支已被 checkout 一次。

或者,您还可以维护本地分支的缓存:ls .git\refs\heads 的输出,保存在某个地方作为一个文件,称为“缓存”。
每次启动 post-checkout Hook 时,它都会执行 ls .git\refs\heads 并将其与其缓存进行比较。如果看到一个新条目(并且在 .git\refs\remotes\origin 中没有类似的分支),很可能是:这是第一次创建的新本地分支。
然后 Hook 将更新缓存文件。

关于仅在新分支上的 Git post-checkout Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26047579/

相关文章:

bash - 从 git hook 调用脚本

svn - 自动同步 Subversion 存储库和 Git 存储库

node.js - 在 WebStorm 和 SourceTree 中使用 NVM 时 Git Hooks 错误

git - 如何计算目录的 git hash-object?

git - 从提交和标记生成变更日志

git - merge 时解决冲突后提交消息的问题

git - 调试 git hook 的执行

c# - 使用 LibGit2Sharp 遍历 Git 存储库中的每个提交?

指示丢弃分支的 Git 约定

git Hook : is there a clone hook?