关于github:从git repo history w search命令中删除所有已删除的文件

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清除文件失败,无法创建新的备份