使用 git filter-repo --commit-callback 根据消息内容或文件名删除提交

问题描述 投票:0回答:1

我正在尝试使用

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 git-filter-repo
1个回答
0
投票

我已成功使用

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 = []
'
© www.soinside.com 2019 - 2024. All rights reserved.