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