Git 克隆引用已删除的文件
Git clone referencing deleted files
当我们对我们的项目进行 git 克隆时,克隆需要一段时间。我们运行下面的命令
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print}')"
它返回了一堆错误推送的大文件,它们被删除了。当前的主人没有这些文件或提交。而且我们没有可能包含这些文件的旧 b运行ches。
我们如何从 git 历史记录或克隆时删除它们。
谢谢
一旦某个项目进入 git 历史记录,它就会永久。即使稍后的提交删除了该文件,该文件仍将存在于 git 克隆中,因为 git 克隆包含完整的历史记录(因为 Git 是 分布式 版本控制系统)。这将允许您通过检查以前的提交来检索文件。
从存储库中删除这些文件以加快克隆速度的唯一 方法是重写历史,以便它从一开始就不会包含这些文件。 Github 提供了有关如何使用 git filter-branch here.
执行此操作的详细说明
可以这样重写存储库的历史以删除大文件:
$ git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' --prune-empty --tag-name-filter cat -- --all
完成之后,您必须force-push覆盖远程存储库上的历史记录。当您这样做时,您的所有开发人员都需要知道历史是 re-written,他们将需要签出存储库的新副本以继续他们的开发。
当我们对我们的项目进行 git 克隆时,克隆需要一段时间。我们运行下面的命令
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print}')"
它返回了一堆错误推送的大文件,它们被删除了。当前的主人没有这些文件或提交。而且我们没有可能包含这些文件的旧 b运行ches。
我们如何从 git 历史记录或克隆时删除它们。
谢谢
一旦某个项目进入 git 历史记录,它就会永久。即使稍后的提交删除了该文件,该文件仍将存在于 git 克隆中,因为 git 克隆包含完整的历史记录(因为 Git 是 分布式 版本控制系统)。这将允许您通过检查以前的提交来检索文件。
从存储库中删除这些文件以加快克隆速度的唯一 方法是重写历史,以便它从一开始就不会包含这些文件。 Github 提供了有关如何使用 git filter-branch here.
执行此操作的详细说明可以这样重写存储库的历史以删除大文件:
$ git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' --prune-empty --tag-name-filter cat -- --all
完成之后,您必须force-push覆盖远程存储库上的历史记录。当您这样做时,您的所有开发人员都需要知道历史是 re-written,他们将需要签出存储库的新副本以继续他们的开发。