必须开始对最初不在版本控制中的项目进行版本控制。因此,仓库现在为 17GB,如果我们要将仓库放入 github,则需要进行配对(网站本身现在配对至约 600MB)。
基本上,我们希望删除在将其从存储库中完全配对的过程中删除的所有内容。我找到了一个很好的命令来查找每个已删除的文件。
git log --all --pretty=format: --name-only --diff-filter=D | sort -u
它漂亮地列出了文件。
现在我如何将其输入到从历史记录中清除它所需的命令中。沿着这些思路。
git filter-branch --tree-filter 'rm -rf { file }' HEAD
我已经制作了存储库的备份副本,所以如果我完全搞砸了事情也没关系。
这是循环所有文件的正确命令吗?如果是这样我该怎么做?
最佳答案
好的,xargs 需要一点帮助。我们需要每行使用一个,但替换为该过滤器分支命令:
git log --all --pretty=format: --name-only --diff-filter=D | sort -u | while read -r line; do git filter-branch -f --tree-filter "rm -rf { $line }" HEAD; done
我们还必须为filter-branch指定-f标志以删除旧的引用,根据Purging file from Git repo failed, unable to create new backup
关于git - 使用搜索命令从 git repo 历史记录中删除所有已删除的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37759053/