如何使所有跟踪的文件恢复到未跟踪,以便.gitignore可以工作?

时间:2016-02-18 15:00:24

标签: git

我有一个问题:

我用git将所有文件提交到远程仓库。

nano .gitignore

git status

在此之后,我尝试使用某些目录配置.gitignore文件

git rm --cached files

现在我想对文件进行一些更改。或者我再次访问我当地的WebProject。

此后系统会创建大量缓存文件。目录定义/站在.gitignore。

问题是git并不关心.gitignore,因为跟踪了所有文件。

我看到所有使用id

创建或打包的文件

我试试:

id

结果是本地的文件现在没有跟踪,.gitignore正在工作!!但是!!在提交并推送我的远程仓库后删除此文件。

现在,我怎样才能解开文件?

所以下一个克隆这个回购的人会错过很多目录。

2 个答案:

答案 0 :(得分:1)

  

所以下一个克隆这个回购的人会错过很多目录。

不用担心,只有当一个目录从包含它们的提交(即之前你做git rm --cached)切换到没有这样做的目录时,目录才会被删除。 t包含它们(即之后)git rm --cached)。这就是服务器上发生的事情。如果有人现在克隆了repo,它将不会删除本地计算机上的那些目录。它只会在签出其中一个较旧的提交时才会这样做,然后签出一个较新的提交。

尽管如此,由于这些目录无论如何都是生成的,如果它们被删除,它就不应该是世界末日。

答案 1 :(得分:0)

  

git rm --cached files   结果是本地的文件现在没有跟踪,.gitignore正在工作!!但是!!在提交并推送我的远程仓库后删除此文件。

是的,您已从存储库中删除了您的文件。这正是git rm --cached files做的

您可以使用assume-unchanged标记,这样就无需修改.gitignore文件 https://git-scm.com/docs/git-update-index

- [无糖]假设-不变

  

指定此标志时,不会更新为路径记录的对象名称。

     

相反,此选项设置/取消设置"假设未更改"路径的位。

     

当"假设不变"如果位为on,则用户承诺不更改文件并允许Git假定工作树文件与索引中记录的文件匹配。如果要更改工作树文件,则需要取消设置该位以告知Git。当在具有非常慢的lstat(2)系统调用(例如cifs)的文件系统上处理大项目时,这有时很有用。

     

如果需要在索引中修改此文件,Git将失败(优雅地),例如合并时提交;因此,如果上游更改了假定未跟踪文件,则需要手动处理该情况。

enter image description here