【发布时间】:2012-04-21 12:13:53
【问题描述】:
我在我的 GitHub 帐户上处理一个存储库,这是我偶然发现的一个问题。
- Node.js 项目的文件夹中安装了一些 npm 包
- 包在
node_modules文件夹中 - 将该文件夹添加到 git 存储库并将代码推送到 github(当时没有考虑 npm 部分)
- 意识到您实际上并不需要该文件夹成为代码的一部分
- 删除那个文件夹,推送它
当时,整个 git 存储库的大小约为 6MB,而实际代码(除该文件夹外的所有代码)仅约为 300 KB。
现在我最终要寻找的是一种从 git 历史记录中删除该包文件夹详细信息的方法,因此如果有人克隆它,他们不必下载 6mb 的历史记录,其中只有他们唯一的实际文件将在最后一次提交时获得 300KB。
我为此查找了可能的解决方案并尝试了这两种方法
- Remove file from git repository (history)
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
Gist 似乎在运行脚本后有效,它显示它摆脱了该文件夹,然后它显示 50 个不同的提交被修改。但它并没有让我推送那个代码。当我尝试推送它时,它显示Branch up to date,但显示有50 个提交在git status 上被修改。其他两种方法也没有帮助。
现在,尽管它显示它已经摆脱了该文件夹的历史记录,但当我在本地主机上检查该 repo 的大小时,它仍然在 6MB 左右。 (我还删除了refs/original文件夹,但没有看到 repo 大小的变化)。
我要澄清的是,如果有办法摆脱提交历史记录(这是我认为唯一发生的事情),而且 git 一直假设想要回滚的那些文件。
假设为此提出了一个解决方案并应用于我的本地主机但无法复制到该 GitHub 存储库,是否可以克隆该存储库,回滚到第一次提交执行技巧并推送它(或者这是否意味着那个 git 仍然会有所有这些提交的历史吗? - 又名 6MB)。
我的最终目标基本上是找到从 git 中删除文件夹内容的最佳方法,这样用户就不必下载 6MB 的东西,并且仍然可能有其他从未触及模块文件夹的提交(这几乎是所有这些)在 git 的历史中。
我该怎么做?
【问题讨论】:
-
如果以下任何一个答案解决了您的问题,也许您应该考虑接受一个作为您问题的答案。 meta.stackexchange.com/questions/5234/…
标签: git github rebase git-rebase