Removing all deleted files from git repo history w search command
必须启动版本控制一个最初不在版本控制中的项目。因此,回购协议现在是17GB,如果我们要将回购协议升级到Github,就需要将其配对(站点本身现在配对到约600MB)。
基本上,我们希望从回购协议中完全删除在配对过程中删除的任何内容。我找到了一个很好的命令来查找每个已删除的文件。
1 | git log --all --pretty=format: --name-only --diff-filter=D | sort -u |
它完美地列出了文件。
现在,我该如何将这个命令导入到从历史中清除它所必需的命令中。沿着这些线的东西。
1 | git filter-branch --tree-filter 'rm -rf { file }' HEAD |
我已经备份了回购协议,所以如果我彻底搞砸了,一切都会好起来的。
这是循环所有文件的正确命令吗?如果是,我该怎么做?
好的,xargs需要一些帮助。我们需要每行使用一个,但替换为filter branch命令:
1 | 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 |
我们还必须指定-f标志来筛选分支以删除旧的引用,每次从git repo清除文件失败,无法创建新的备份