Git:无法删除版本控制中的对象
Git: Object in Version Control cannot be removed
我正在尝试使用 git push origin <branchname>
将我的本地分支推送到我的原始分支。
我得到一个:
remote: error: File app/assets/images/title00.mp4 is 297.77 MB;
错误,抱怨我超过了 GitHub 允许的文件大小。
它抱怨的文件不再在我的版本控制中,因为我删除它的确切原因是它太大了。
因此,当我尝试遵循 Git 文档建议时
git rm <path-to-large-file>
我收到以下错误:
fatal: pathspec 'app/assets/images/title00.mp4' did not match any files
知道我应该如何进行吗?
您可以使用出色的 BFG 存储库清理器从存储库历史记录中清除文件。
基本上,你可以运行以下步骤
首先。
安装 bfg 清洁器。在 MacOSX 中,使用 brew install bfg
。
其次,从您的历史记录中清除您的文件。
git clone --mirror git@github.com:your_github_user/your_github_repo.git
bfg --delete-files title00.mp4 your_github_repo.git
cd your_github_repo.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
然后你必须清除你的非镜像报告(你的开发文件夹)并从github再次克隆它以避免重新推送大文件。
git clone git@github.com:your_github_user/your_github_repo.git
显然,更多信息在 BFG 网站上。
Removing a File from Every Commit
This occurs fairly commonly. Someone accidentally commits a huge binary file with a thoughtless git add .
, and you want to remove it everywhere. Perhaps you accidentally committed a file that contained a password, and you want to make your project open source. filter-branch
is the tool you probably want to use to scrub your entire history. To remove a file named passwords.txt
from your entire history, you can use the --tree-filter
option to filter-branch
:
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21)
Ref 'refs/heads/master' was rewritten
在您的场景中,您可能想要执行以下操作:
git filter-branch --tree-filter 'rm -f app/assets/images/title00.mp4' HEAD
我正在尝试使用 git push origin <branchname>
将我的本地分支推送到我的原始分支。
我得到一个:
remote: error: File app/assets/images/title00.mp4 is 297.77 MB;
错误,抱怨我超过了 GitHub 允许的文件大小。
它抱怨的文件不再在我的版本控制中,因为我删除它的确切原因是它太大了。
因此,当我尝试遵循 Git 文档建议时
git rm <path-to-large-file>
我收到以下错误:
fatal: pathspec 'app/assets/images/title00.mp4' did not match any files
知道我应该如何进行吗?
您可以使用出色的 BFG 存储库清理器从存储库历史记录中清除文件。 基本上,你可以运行以下步骤
首先。
安装 bfg 清洁器。在 MacOSX 中,使用 brew install bfg
。
其次,从您的历史记录中清除您的文件。
git clone --mirror git@github.com:your_github_user/your_github_repo.git
bfg --delete-files title00.mp4 your_github_repo.git
cd your_github_repo.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
然后你必须清除你的非镜像报告(你的开发文件夹)并从github再次克隆它以避免重新推送大文件。
git clone git@github.com:your_github_user/your_github_repo.git
显然,更多信息在 BFG 网站上。
Removing a File from Every Commit
This occurs fairly commonly. Someone accidentally commits a huge binary file with a thoughtless
git add .
, and you want to remove it everywhere. Perhaps you accidentally committed a file that contained a password, and you want to make your project open source.filter-branch
is the tool you probably want to use to scrub your entire history. To remove a file namedpasswords.txt
from your entire history, you can use the--tree-filter
option tofilter-branch
:
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21)
Ref 'refs/heads/master' was rewritten
在您的场景中,您可能想要执行以下操作:
git filter-branch --tree-filter 'rm -f app/assets/images/title00.mp4' HEAD