【问题标题】:Git post-checkout hook on new branches only仅在新分支上的 Git 结帐后挂钩
【发布时间】:2014-09-25 20:31:54
【问题描述】:

我正在尝试创建一个 git 挂钩,该挂钩仅在签出新分支时运行(即使用 -b 标志)。我正在使用post-checkout 钩子并尝试了各种技术来使其正常工作,例如检查oldrev。

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

谢谢!

【问题讨论】:

  • 据我所知,一旦创建,“新”分支与“旧”分支无法区分。
  • 我不认为 git 提供了一种方法来做你想做的事。不过,您可以通过查看有多少 reflog 条目来偶尔获得成功。
  • Post-checkout hook with Git 的可能重复项
  • 谢谢,在提出我的问题之前,我将上述问题视为可能重复的问题。它的答案解决了如何使用 post-checkout 钩子,但不回答检测新分支的问题。
  • @westonkd 我认为这不可能比that suggested by Andrew 更可靠。

标签: git githooks


【解决方案1】:

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

但“新”与哪个分支相比? Detecting a "branch point" 很棘手,因为您不知道要考虑哪个起始分支。

您也可以check the reflog 验证分支是否已签出一次。

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

【讨论】:

    猜你喜欢
    • 2020-12-19
    • 2011-01-09
    • 1970-01-01
    • 2014-10-24
    • 2016-02-12
    • 2012-05-17
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多