有没有后置的rebase hook?我的目标是希望在使用git pull --rebase
命令之后执行一个脚本。
似乎重写后钩子可以完成这项工作。
一个 post-checkout
钩子也可以工作,但只有在 Git 2.21(2019年第一季度)之后才能使用:"git rebase
" 在内部运行 "checkout
" 切换分支,用于调用 post-checkout
钩子的命令被重新实现(从 shell 脚本到 C),不再执行此操作,这个问题正在得到解决。
查看 提交 8581df6, 提交 10499a9 (2018年12月29日) 由 Orgad Shaneh (orgads
) 提交。
(由 Junio C Hamano -- gitster
-- 合并于 提交 d94ade7, 2019年1月29日)
rebase
:在检出时运行post-checkout
挂钩脚本版本的rebase在初始检出时运行此挂钩。
过渡到内置引入了回归。
git rebase
" 调用了一些旨在 "checkout
" 和 "commit
" 的钩子,但这并不是预期的行为,而是历史原因导致的。这已经有所记录。参见commit f7139e7(由Elijah Newren (newren
)于2020年4月5日提交)。(由Junio C Hamano -- gitster
--于2020年4月28日合并至commit 1779d18)
git-rebase.txt
:添加另一个钩子到钩子部分,并进行更多解释签署者:Elijah Newren
有关这些钩子的更多讨论,它们相对于rebase的历史以及不同类型操作之间的逻辑一致性,请参见git邮件列表线程以及其中引用的一些线程的链接。
git rebase
钩子部分现在包括:
apply后端传统上没有调用post-commit
钩子,而merge
后端有。
两者都调用了post-checkout
钩子,尽管合并后端已将其输出压制。
此外,两个后端仅使用rebase的起始提交而不是中间提交或最终提交来调用post-checkout钩子。
在每种情况下,调用这些钩子是由于实现的偶然性而不是设计(两个后端最初是作为shell脚本实现的,并碰巧调用其他命令,如'git checkout
'或'git commit
',这将调用钩子)。
两个后端应该具有相同的行为,尽管不完全清楚哪个是正确的。
我们可能会在未来停止rebase调用这些钩子之一。