# GITHUB 大文件提交
下载安装 Git Large File Storage 命令行工具。参考这里 (opens new window)。
brew install git-lfs
配置 Git LFS。每个用户只需要配置一次就好了
git lfs install
在想要使用大文件追踪的 GIT 目录下,使用如下命令追踪大文件。
git lfs track "*.psd"
。就像正常提交文件一样提交就好了。
git add file.psd git commit -m "Add design file" git push origin main
Note
- 对于新增加的大文件可以使用这种方式,对于已经存在的大文件使用
git lfs migrate
命令。- 通过命令
git add .gitattributes
来增加属性文件,确保大文件被追踪。
# GITHUB 大文件清理
因为 GITHUB 的免费账户有大文件的容量限制,只能上传最多 1G,再多就需要付费了(不付费的的话似乎仓库会被锁定),所以有的时候需要删除 GITHUB 上的大文件,怎么删除呢?
GITHUB 官方并没有提供单独删除大文件的方案,官方文档提示需要将整个仓库移除才行。
我的想法是移除仓库,然后在本地移除指定大文件后,新建仓库重新上传。能不能做到呢?答案是能。
主要是使用 BFG Repo-Cleaner (opens new window) 这个工具,下载下来 .jar 文件后,在当前的仓库下执行如下命令来清除 100M 以上的文件。
$ java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git
这个改动会修改所有commit的值,所以涉及到团队协作的话,需要和团队里的其他成员同步你的修改状况,保证所有人用最新的提交。
有的时候执行这个命令没有过滤出git中的大文件,提示 no large blobs matching criteria found in packfiles - does the repo need to be packed?
。这时候可以尝试先执行 git gc
命令重新 pack 一下仓库(参考这个 issue (opens new window)),再去移除大文件。
还有一种场景是,大文件是在过去的某个版本中提交的,但是当前的版本已经不再需要这个大文件了,GIT 依然会上传这个大文件,如果不在意历史提交记录的化,可以将历史提交记录重置。
关于删掉提交记录,有人说可以直接删掉 .git 目录,但是似乎是有问题。更好的解决方案可以参考这个问题 (opens new window)的回答,主要命令是创建一个孤儿分支 git checkout --orphan latest_branch
。
参考地址: