仅新分支上的Git签出后挂钩

仅新分支上的Git签出后挂钩,git,githooks,Git,Githooks,我正在尝试创建一个git钩子,它仅在签出新分支时(即使用了-b标志)才会在签出后运行。我正在使用一个签出后钩子,并尝试了各种技术来让它像检查oldrev一样工作 post checkout是我想要的钩子吗?如果是这样的话,我应该在脚本中使用什么逻辑,这样钩子只在签出新分支时生效 谢谢大家! 问题在于找不到挂钩(可以使用签出后挂钩)。 它用于检测刚刚创建的新本地分支 但“新”与哪个部门相比?很难理解,因为你不知道要考虑哪一个分支。 您还可以验证分支是否已签出一次 或者,您也可以维护本地分支的缓存:

我正在尝试创建一个git钩子,它仅在签出新分支时(即使用了
-b
标志)才会在签出后运行。我正在使用一个
签出后
钩子,并尝试了各种技术来让它像检查oldrev一样工作

post checkout
是我想要的钩子吗?如果是这样的话,我应该在脚本中使用什么逻辑,这样钩子只在签出新分支时生效


谢谢大家!

问题在于找不到挂钩(可以使用
签出后挂钩)。
它用于检测刚刚创建的新本地分支

但“新”与哪个部门相比?很难理解,因为你不知道要考虑哪一个分支。

您还可以验证分支是否已签出一次

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

然后钩子会更新缓存文件。

据我所知,一旦创建了“新”分支,就无法区分“旧”分支。我认为git无法提供一种方法来实现您想要的功能。你可以通过查看有多少条reflog条目来获得偶尔的成功。可能重复的感谢,在问我的问题之前,我把上面提到的问题作为可能的重复阅读。它的答案是如何使用签出后钩子,但不要回答检测新分支的问题。@westonkd我认为这是最可靠的方法。