【问题标题】:Git ignore files but repo site doesn't changeGit忽略文件但回购站点没有改变
【发布时间】:2015-09-23 09:20:34
【问题描述】:

我想在现有存储库上应用 .gitignore 文件,但存储库大小和推送的文件数量都没有变化。

我所做的是:

  1. 在根路径上创建 .gitignore
  2. 向该文件添加文件/路径
  3. git rm -r --cached 。删除所有跟踪的文件
  4. git 添加。
  5. 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。

标签: git github gitignore


【解决方案1】:

当您推送更改时,存储库中会发生更改

git push origin master

然后,它应该按预期工作。

【讨论】:

  • 问题是 git 试图推送这个 ~2GB 的存储库,这真的不是我想要的。
猜你喜欢
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
相关资源
最近更新 更多