Git历史包含不需要的文件,删除它们证明是混乱的

时间:2015-07-17 18:08:12

标签: git

所以我希望一堆文件不受攻击并且不被Git改变。如果我将它们添加到gitignore,那就不会追溯删除它们。如果我通过this method删除它们,它们会从所有提交中消失,但它们实际上也会从我当前的工作副本中消失。我仍然需要这些文件,我只是不需要Git跟踪它们。

任何方式都可以删除文件,就好像它们一直存在但不属于Git"域"?

出于某种原因,删除文件的任何常用方法都会使repo仍然一样大(~2.9GB),如果它只包含我的特定代码,它最多应该是几MB。

固定!!更改配置文件中的内存设置允许我执行git gc,这是this page中列出的过程的一部分。我使用的设置是:

threads = 1
deltaCacheSize = 128m
windowMemory = 50m

2 个答案:

答案 0 :(得分:1)

git rm -r --cached .
git add -A
git commit -am 'Removing ignored files'

第一个命令将取消跟踪git存储库中的所有文件。  git rm -r - 缓存因缓存此文件将出现在您的本地工作副本中,并将从repo中删除。

第二个命令将添加git存储库中的所有文件,但与.gitignore中的规则匹配的文件除外。因此,我们只用两个命令来跟踪几个文件。

然后最后一个命令是提交更改,这将只是删除文件。  另一种替代解决方案是

//untrack committed files
git update–index –assume-unchanged fileName

此链接将帮助您了解具体方法 Untrack files from git

答案 1 :(得分:0)

要让git停止跟踪已添加的文件,您必须从索引中删除该文件,

git rm --cached <file-path>
git commit

将文件添加到.gitignore并再次提交。 Git将不再跟踪该文件。