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

时间:2016-06-11 01:18:06

标签: git github version-control

必须启动控制最初不在版本控制中的项目的版本。因此,如果我们要将repo升级到github,那么repo现在是17gb并且需要配对(该站点本身现在配对下降到大约600mb)。

基本上我们想要删除在完全将它与repo配对的过程中删除的任何内容。我找到了一个很棒的命令来查找每个已删除的文件。

git log --all --pretty=format: --name-only --diff-filter=D | sort -u

精美地列出文件。

现在,我如何将其输入到从历史记录中清除它所需的命令。沿着这些方向的东西。

git filter-branch --tree-filter 'rm -rf { file }' HEAD

我已经制作了回购的副本,所以如果我完全搞砸了就行了。

这是将所有文件循环到的正确命令吗?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:2)

好的,xargs需要一些帮助。我们需要每行使用一个,但替换为filter-branch命令:

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标志来filter-branch以删除旧的引用,每Purging file from Git repo failed, unable to create new backup