我正在尝试使用
commit.skip()
根据其消息或文件名从我的存储库历史记录中删除提交。然而,似乎一旦条件语句的计算结果为真,历史记录中的所有后续提交都会被跳过,无论条件如何。
我用来根据文件名跳过提交的代码如下:
git filter-repo --commit-callback
for change in commit.file_changes:
if b"index" in change.filename:
commit.skip()
而根据消息内容跳过提交如下:
git filter-repo --commit-callback
if b"index" in commit.message:
commit.skip()
条件的逻辑是正确的,就像我使用时一样
git filter-repo --commit-callback
if b"index" in commit.message:
commit.message = b"new commit message"
它工作得很好,只影响尊重条件语句的提交。
关于如何实现这一目标有什么想法吗?
我已成功使用
git filter-repo
根据提交消息通过清空 file_changes
来跳过提交:
$ git filter-repo --version
eb5179299436
$ git filter-repo \
--commit-callback '
if b"some string" in commit.message:
commit.file_changes = []
'