Git post-rebase钩子

24

有没有后置的rebase hook?我的目标是希望在使用git pull --rebase命令之后执行一个脚本。

2个回答

14

似乎重写后钩子可以完成这项工作。


3
你解决了吗?当我执行pull命令时,我的分支被更新并合并了新的更改,没有冲突,但我的钩子没有触发。 - user82116
它對我來說有點有效...但不總是...我不知道為什麼有時候(很少發生)它沒有觸發,因為我沒有調查過。但大多數情況下它做了它應該做的事情。 - Kapaacius
1
@user82116 ff 只是较新提交的一个检验,所以我相信会触发 post-checkout 钩子。 - Dziamid

3

一个 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 2.27(2020年第二季度),"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钩子部分现在包括:

Hooks

apply后端传统上没有调用post-commit钩子,而merge后端有。

两者都调用了post-checkout钩子,尽管合并后端已将其输出压制。

此外,两个后端仅使用rebase的起始提交而不是中间提交或最终提交来调用post-checkout钩子。
在每种情况下,调用这些钩子是由于实现的偶然性而不是设计(两个后端最初是作为shell脚本实现的,并碰巧调用其他命令,如'git checkout'或'git commit',这将调用钩子)。

两个后端应该具有相同的行为,尽管不完全清楚哪个是正确的。
我们可能会在未来停止rebase调用这些钩子之一。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接