我正在尝试创建一个 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/