git 我可以在没有历史数据库的情况下强制执行“无更改变基”吗?

ulydmbyx  于 2023-05-05  发布在  Git
关注(0)|答案(1)|浏览(108)

我有一个git仓库,其中有一堆合并冲突,特别是由于CRLF与LF问题(唉)。无论如何,我想更改过去提交的提交消息,否则在代码中保持一切原样。我既没有rerere.enabled,也没有历史数据库,我也不想有一个。我只想告诉git-rebase“Keep everything just the same”,除了一个提交注解,它是纯元数据。
我能这么做吗
相关问题:

(in其中-r被指定;答案建议使用rerere

axr492tv

axr492tv1#

(对@j6t的建议的一个变体:)
您可以使用git-filter-repo的提交编辑功能。这个工具通常用于在git仓库上应用基于回调或基于分析的转换,但您可能会使用的特定功能是在每次提交时运行给定Python脚本的能力:

$ cd /path/to/repository
$ git-filter-repo --commit-callback 'SCRIPT BODY HERE'

现在,当脚本运行时,将定义一个名为commit的对象。该对象具有保存散列的字段commit.original_id和保存提交消息的字段commit.message。因此,您的脚本可能类似于:

'if (commit.hash.startswith(b"0xdeadbeaf")):
    commit.message.replace(b"Hello world", b"Goodbye world")
'

您还可以查看更多git-filter-repo脚本的示例。
答:我自己还没试过。

相关问题