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