我正在尝试重写git存储库历史并应用新的pre-commit
挂钩:
1.每次提交
1.将pre-commit
挂钩
1.保留原始元数据(作者、日期、消息)
1.手动解决冲突(如果有)(挂钩可以更改提交)
1.承诺新回购
结束状态是具有不同提交历史的新回购。
我已经发现:
cherry-pick
不运行pre-commit
挂钩。- 我能做到
git cherry-pick --no-commit
git commit --no-edit
但它并没有保留提交日期。此外,不知道如何为历史上的每个提交执行该操作(除非我为此编写了一个Python脚本)。
关于如何有效地做到这一点,有什么想法吗?
1条答案
按热度按时间ymdaylpp1#
将
--exec
标志用于git rebase
,可能与自定义GIT_SEQUENCE_EDITOR
一起使用,以跳过与拾取列表的交互提示。比如:这将在拾取列表中的每个
pick <commit>
之后添加exec .git/hooks/pre-commit
。如果pre-commit
挂钩失败,将中断rebase
:您可以手动解决问题,然后执行
git rebase --continue
。