我正在尝试创建一个在签出后运行的git钩子,只有在检出新分支时(即使用了-b
标志)。我正在使用post-checkout
钩子,并尝试了各种技术来使其工作,如检查oldrev。
post-checkout
是我想要的钩子吗?如果是这样,我应该在脚本中使用什么逻辑,这样钩子只在签出新分支时生效?
谢谢!
答案 0 :(得分:0)
问题是没有找到钩子(可以使用post-checkout
钩子。)
它是检测刚刚创建了一个新的本地分支。
但“新”相比哪个分支?考虑到你不知道要考虑哪个起始分支,Detecting a "branch point"很棘手。
您还可以check the reflog验证分支是否已经签出一次。
或者,您还可以维护本地分支的缓存:ls .git\refs\heads
的输出,保存在某个文件中,称为“缓存”。
每次启动post-checkout
挂钩时,都会执行ls .git\refs\heads
并将其与缓存进行比较。如果看到一个新条目(并且.git\refs\remotes\origin
中没有类似的分支),则可能是:这是第一次创建的新本地分支。
然后钩子会更新缓存文件。