【发布时间】:2019-11-26 20:22:17
【问题描述】:
有没有办法防止在樱桃采摘后运行提交后挂钩?我只想在git commit 之后专门运行提交后挂钩。或者有没有办法找出提交已经被挑选出来的钩子? example for rebase 可以这样做,但情况不同。
【问题讨论】:
有没有办法防止在樱桃采摘后运行提交后挂钩?我只想在git commit 之后专门运行提交后挂钩。或者有没有办法找出提交已经被挑选出来的钩子? example for rebase 可以这样做,但情况不同。
【问题讨论】:
对于git cherry-pick,文件似乎是CHERRY_PICK_HEAD。 git 与用于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 运行时不再存在。
我终于在钩子内部解决了这个问题。我检查了git reflog -n 1 的输出,类似于e06ca29a23 HEAD@{0}: cherry-pick: commit message。这不是防弹的,如果您在挑选期间修改提交,则 reflog 中有一个新条目用于修改,但除此之外,它似乎有效。
【讨论】: