我在我的 GitHub 帐户上开发一个存储库,这是我偶然发现的一个问题。
- Node.js 项目的文件夹中安装了一些 npm 包
- 包裹在
node_modules
文件夹中 - 将该文件夹添加到 git 存储库并将代码推送到 github(当时没有考虑 npm 部分)
- 意识到您实际上并不需要该文件夹成为代码的一部分
- 删除那个文件夹,推送它
在那种情况下,总 git repo 的大小约为6MB,而实际代码(除该文件夹外的所有代码)仅为300 KB左右。
现在我最终要寻找的是一种从 git 历史记录中删除该包文件夹详细信息的方法,因此如果有人克隆它,他们不必下载 6mb 的历史记录,他们将获得的唯一实际文件截至最后一次提交将是 300KB。
我为此查找了可能的解决方案并尝试了这两种方法
Gist 似乎在运行脚本后有效,它显示它摆脱了该文件夹,然后它显示修改了 50 个不同的提交。但它并没有让我推送那个代码。当我尝试推送它时,它说Branch up to date
但显示 50 个提交在git status
. 其他两种方法也没有帮助。
现在,即使它显示它已经摆脱了该文件夹的历史记录,但当我在本地主机上检查该存储库的大小时,它仍然在 6MB 左右。(我也删除了该refs/original
文件夹,但没有看到 repo 大小的变化)。
我想要澄清的是,如果有一种方法不仅可以摆脱提交历史(这是我认为唯一发生的事情),而且 git 一直假设想要回滚的那些文件。
可以说为此提出了一个解决方案并应用于我的本地主机但无法复制到该 GitHub 存储库,是否可以克隆该存储库,回滚到第一个提交执行技巧并推送它(或者这是否意味着 git 将仍然有所有这些提交的历史吗? - 又名 6MB)。
我的最终目标是基本上找到从 git 中删除文件夹内容的最佳方法,这样用户就不必下载 6MB 的东西,并且仍然可能有其他从未触及模块文件夹的提交(这很漂亮很多)在 git 的历史中。
我怎样才能做到这一点?