我 fork 了另一个存储库,然后向其中添加了许多文件。我偶尔会 merge 原始存储库中的更改以保持最新状态。
我意识到我的 fork 中有一些文件应该被删除,所以我尝试按照 [1] 从我的 git 存储库中删除一些文件。源代码库有数千个提交,而我有几百个。
当我执行该命令时,它也会尝试搜索所有源提交,而不仅仅是我的 fork 提交,这将花费数小时而不是几分钟。
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch filename.txt' --prune-empty @
其间有许多来自上游的 merge 。
master A---B---C---D---E---F---G (HEAD)
/ /
upstream/master H---I---J---K
[1] https://help.github.com/en/github/authenticating-to-github/removing-sensitive-data-from-a-repository
最佳答案
我还没有查看 filter-repo
命令,但是您可以向 filter-branch
提供您想要检查的提交的确切列表,以及 a 之后的所有内容--
arg 被馈送到 rev-list
filter-branch
运行以生成其候选者,例如
git filter-branch --index-filter "$myfilter" -- --first-parent HEAD
关于Git 过滤分支仅适用于 fork 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59723878/