为什么非交互式rebase上的Git post-commit挂钩没有运行?

Tim*_*ske 5 git git-rebase non-interactive post-commit-hook

给定一个任意的,可执行的Git post-commit钩子,它不会在非交互式rebase期间运行,根据GIT-REBASE(1)Manpage,在非交互模式下,它既不是前者的同义词,rebase --force-rebase也不rebase --no-ff是前者的同义词.

但是通过使用rebase --interactive --no-ff相同的Git钩子进行交互式rebase,可以在post-commit上运行.

有人可以解释这种行为背后的基本原理.

gri*_*ock 0

来自https://git-scm.com/docs/git-rebase

--no-ff 使用 --interactive,优先选择所有重新调整的提交,而不是快进未更改的提交。这确保了变基分支的整个历史记录都是由新提交组成的。

如果没有 --interactive,这是 --force-rebase 的同义词。

在恢复主题分支合并后,您可能会发现这很有用,因为此选项会使用新提交重新创建主题分支,因此可以成功重新合并,而无需“恢复恢复”(请参阅​​ revert-a-faulty-merge How-To 了解更多信息)细节)。

Cherry pick 创建新的提交,并且 git post-commit 挂钩在创建新的提交后运行,对吗?

来自: https: //git-scm.com/docs/git-cherry-pick

描述 给定一个或多个现有提交,应用每个提交引入的更改,为每个提交记录一个新提交。这要求您的工作树是干净的(没有来自 HEAD 提交的修改)。

明白了吗?