git从整个历史中删除所有已删除的文件
我想知道是否有人有更高效,更聪明的方式来做到这一点。 循环构造要求通过读取每个提交来从每次提交中删除每个删除的文件。 有了很多提交,这需要很长时间。
git log --pretty=format: --name-status | grep -i ^D | cut -f2- | sort -u | xargs -I {} git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch {}' HEAD
这似乎每次删除一个文件。
考虑到git rm
可能需要删除多个文件。
所以一个优化就是构建该列表并调用一次filter-branch。
您可以在“正确的方式使用git filter-branch
删除不需要的文件,而没有git rm
失败”的方法中看到一个示例。