【发布时间】:2015-09-23 09:20:34
【问题描述】:
我想在现有存储库上应用 .gitignore 文件,但存储库大小和推送的文件数量都没有变化。
我所做的是:
- 在根路径上创建 .gitignore
- 向该文件添加文件/路径
- git rm -r --cached 。删除所有跟踪的文件
- git 添加。
- git 提交
但是当我执行git count-objects -v -H 时,它会告诉我:size-pack: 2.15GB。
当我推送 repo 时会花费大量时间,所以我希望 git 真的会尝试推送这个 2GB 的怪物。
查看git status --ignored 的输出后,我看到了我想忽略的文件夹,这意味着 git 知道它们不应该被跟踪?
我的问题是如何将我的文件保存在本地,不跟踪 git count-objects 命令中的某些文件/文件夹,并防止 git 将所述文件夹推送到我的在线存储库。
编辑
执行git repack 后,git count-objects -v -H 的输出显示size-pack: 4.31GB。
编辑
在.git\objects\pack 路径下是一个与git count-objects -v -H 告诉我的大小完全相同的文件。将文件保存到其他位置并将其删除后,存储库大小约为 3MiB,这更有可能。
但这并不容易,因为现在 Git 告诉我我的分支没有指向有效的对象。
error: Could not read 605553ce8c011122449e86a5a5c4dfee846622b7
fatal: Failed to traverse parents of commit 0ac59e4f558299f981220f6b84e56584f98a2c38
error: failed to run repack
vagrant@vbox:/var/www$ git branch -rd origin/test-upgrade-branch
error: refs/heads/development does not point to a valid object!
【问题讨论】:
-
git 添加。 实际上,.gitignore 是在您保存文件的那一刻应用的
-
你应该先添加并提交
.gitignore文件才能生效。 -
我也试过了,.gitignore 文件正在被应用,但 count-objects 方法仍然返回 ~4GB。
-
您之前是否添加了文件?如果是这样,您不能以这种方式从存储库中一起删除它们。您应该查看 rtyley.github.io/bfg-repo-cleaner 以从 git 对象中删除它们。或者使用
git-filter-branch使用 git 命令来完成。 -
感谢您的提示。我认为问题不在于我有一个或两个大文件,这对我来说是我的存储库历史有问题。我做了一个
git -r --cached .并修改了我的.gitignore。之后,我添加并提交了.gitignore,然后再次添加并提交了正在工作的文件。但大小仍保持在 ~4GiB。