git - 使用搜索命令从 git repo 历史记录中删除所有已删除的文件

标签 git github version-control

必须开始对最初不在版本控制中的项目进行版本控制。因此,仓库现在为 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/

相关文章:

GitHub 页面 - 网址重写支持

git - 将 git repo 中的目录移动到另一个 git repo,保留部分提交历史记录

ruby-on-rails - 忽略git中的本地配置文件

git - 如何在 GitHub 上创建特定于分支的文件

android - 为什么我在工作目录中看不到任何 android 源文件?

version-control - SCM URL 相对于 POM 中的父 SCM URL

java - 如何在 Eclipse 中分 ionic 项目类路径?

git - 如何将 git 文件状态添加到 vim 的状态行?

git - 为什么当 repo 变大时 git 操作变慢

git - 如何仅为特定 repo 设置 GIT_SSL_NO_VERIFY?