如何用git filter-repo只修改一个范围内的提交,而不是修改整个分支历史?

6g8kf2rb  于 2023-03-06  发布在  Git
关注(0)|答案(1)|浏览(281)

我想使用git filter-repo自动地为我的多重提交拉取请求应用一些脚本化的样式指南重构。
因此,我只想对最近推送的几个新提交应用这些操作,而不想触及更早历史中的任何其他提交。
有办法吗?
为了具体起见,这里有一个测试repo:https://github.com/cirosantilli/test-git-filter-repository和样本斑点操作:

# Install git filter-repo.
# https://superuser.com/questions/1563034/how-do-you-install-git-filter-repo/1589985#1589985
python3 -m pip install --user git-filter-repo

# Usage.
git clone https://github.com/cirosantilli/test-git-filter-repository
cd test-git-filter-repository
printf 'd1==>asdf
d2==>qwer
' > replace.txt
git filter-repo --replace-text replace.txt --refs HEAD

based on:如何替换整个Git历史中的字符串?
上面的方法会影响测试报告的所有3次提交。例如,有没有办法只影响最后2次提交?
blob操作应该非常适合我的用例,因为我只想接触我的提交修改过的blob。
我在文档中找不到。
我还在他们的问题追踪器上问:https://github.com/newren/git-filter-repo/issues/157
在git过滤器存储库ac039ecc095d上进行测试。

erhoui1w

erhoui1w1#

尝试指定一个提交范围作为--refs参数:

git filter-repo ... --refs HEAD~2..master

在文档(链接)中,我没有找到明确声明提交范围是--refs <refs+>的有效值,
但是代码说它直接传递给git fast-export,所以它们在实践中是这样的。

相关问题