【问题标题】:Remove old folder from a public git repo从公共 git 存储库中删除旧文件夹
【发布时间】:2011-09-30 00:25:07
【问题描述】:

我在 Github 中有一个 repo 的 fork,它在 vendor 文件夹中有大型二进制文件。我想删除该文件夹,以便 repo 恢复正常大小。

问题/挑战:

  • 有 7 个 - 非顺序 - 提交与供应商文件夹有关。
  • 有数百个提交分隔这些提交。由于它们是 OSS 贡献,因此丢失该历史记录是不合适的。
  • 如果分叉了我的仓库的人不能使用这个新仓库,那OK。他们都没有新的提交。他们可以毫无问题地再次分叉。

我想听听有关如何进行的建议。

谢谢。

【问题讨论】:

标签: git github


【解决方案1】:

您将要查看git filter-branch,更具体地说,是--tree-filter 选项。例如:

git filter-branch --tree-filter "rm -r vendor/*" HEAD

【讨论】:

  • 我想补充一点,在 90 天内,git 中的内容并未“正式删除”。如果您希望您的 repo 缩小,您需要将垃圾收集的到期日期设置为立即、垃圾收集,然后再次将到期日期设置为 90 天。
  • 要么git gc --prune=now(如果它们打开,则首先清除引用日志),或者只是重新克隆存储库并使用新克隆(这将自动成为一个新的最小存储库,因为未使用的东西不是' t 克隆)。
  • 我在我的本地仓库中尝试过这个并且它有效。但是当我执行 git status 时,我看到“您的分支和 'origin/master' 已经分歧,# 并且分别有 181 和 181 个不同的提交。”
  • 所以我可以重写我本地 repo 的历史,但是有没有办法将这些更改推送到 github?
  • 您可以git push origin HEAD --force 强制 GitHub 采用新版本而不是现有版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-15
  • 2011-01-04
相关资源
最近更新 更多