如何重新创建git提交历史,但使用预提交挂钩?

ki0zmccv  于 2022-10-23  发布在  Git
关注(0)|答案(1)|浏览(107)

我正在尝试重写git存储库历史并应用新的pre-commit挂钩:
1.每次提交
1.将pre-commit挂钩
1.保留原始元数据(作者、日期、消息)
1.手动解决冲突(如果有)(挂钩可以更改提交)
1.承诺新回购
结束状态是具有不同提交历史的新回购。
我已经发现:

  • cherry-pick不运行pre-commit挂钩。
  • 我能做到
git cherry-pick --no-commit
git commit --no-edit

但它并没有保留提交日期。此外,不知道如何为历史上的每个提交执行该操作(除非我为此编写了一个Python脚本)。
关于如何有效地做到这一点,有什么想法吗?

ymdaylpp

ymdaylpp1#

--exec标志用于git rebase,可能与自定义GIT_SEQUENCE_EDITOR一起使用,以跳过与拾取列表的交互提示。比如:

GIT_SEQUENCE_EDIT=cat git rebase --root --exec .git/hooks/pre-commit

这将在拾取列表中的每个pick <commit>之后添加exec .git/hooks/pre-commit。如果pre-commit挂钩失败,将中断rebase

Executing: .git/hooks/pre-commit
warning: execution failed: .git/hooks/pre-commit
You can fix the problem, and then run

  git rebase --continue

您可以手动解决问题,然后执行git rebase --continue

相关问题