2016-06-11 98 views
1

必须启动版本控制项目,而不是最初版本控制。因此,如果我们要将回购交易到github(该网站本身现在配对至600mb左右),回购现在是17GB,需要配对。从git repo历史记录中删除所有已删除的文件w搜索命令

基本上,我们要删除任何东西,我们从完全回购配对下来的过程中被删除。我发现了一个很棒的命令来查找每个被删除的文件。

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

其中列出了漂亮的文件。

现在我该如何管理这个必要的命令来清除历史记录。沿着这些线路的东西。

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

我做了回购的备份副本,所以如果我完全搞砸了事情会没事的。

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

回答

1

好的,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 

我们还必须指定-f标志过滤分支删除旧的裁判,每Purging file from Git repo failed, unable to create new backup

+0

帮助,我在通过第一次提交 [code](警告:Ref'refs/heads/master'没有更改)后会收到错误消息 任何线索? –

+0

没关系 - 我是这台服务器上的SUDOer - 不得不在git filter-branch之前添加另一个SUDO。现在似乎工作 - 谢谢你! –

+0

伟大的工作。如果你可以投票回答这个问题,那会给我一些荣誉。谢谢。 – DavidN

相关问题