我想知道是否有人有更高效,更聪明的方式来做到这一点.循环结构要求通过读取每个提交,从每次提交中清除每个已删除的文件.有很多提交,这需要很长时间.
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
Run Code Online (Sandbox Code Playgroud)
这似乎一次删除每个文件一个。
考虑到git rm可能需要删除多个文件。
因此,一种优化是构建该列表并调用一次过滤器分支。您可以在“不失败地删除不需要的文件的正确方法
”
中看到该方法的一个示例。git filter-branchgit rm