【问题标题】:Prevent post-commit hook after cherry-pick防止樱桃挑选后提交后挂钩
【发布时间】:2019-11-26 20:22:17
【问题描述】:

有没有办法防止在樱桃采摘后运行提交后挂钩?我只想在git commit 之后专门运行提交后挂钩。或者有没有办法找出提交已经被挑选出来的钩子? example for rebase 可以这样做,但情况不同。

【问题讨论】:

    标签: git githooks


    【解决方案1】:

    对于git cherry-pick,文件似乎是CHERRY_PICK_HEADgit 与用于cherry-pick/rebase/revert 的sequencer 相同。 git status uses it 报告“樱桃采摘正在进行中”。

    【讨论】:

    • 我尝试了你的想法,但似乎CHERRY_PICK_HEAD 在提交之前消失了,例如在解决一些冲突时,我可以设置文件,但是当我使用以下post-commit 运行git cherry-pick --continue 时检查像这样[[ -f "$(git rev-parse --git-dir)/CHERRY_PICK_HEAD" ]] && echo "Cherry-Picking, Skip..." || "Post committing" 的文件存在,我仍然得到“提交后”。
    • 我看到了同样的行为,CHERRY_PICK_HEAD 在 hook 运行时不再存在。
    【解决方案2】:

    我终于在钩子内部解决了这个问题。我检查了git reflog -n 1 的输出,类似于e06ca29a23 HEAD@{0}: cherry-pick: commit message。这不是防弹的,如果您在挑选期间修改提交,则 reflog 中有一个新条目用于修改,但除此之外,它似乎有效。

    【讨论】:

      猜你喜欢
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 2016-05-30
      相关资源
      最近更新 更多