我有一个问题:
我用git将所有文件提交到远程仓库。
nano .gitignore
git status
在此之后,我尝试使用某些目录配置.gitignore文件
git rm --cached files
现在我想对文件进行一些更改。或者我再次访问我当地的WebProject。
此后系统会创建大量缓存文件。目录定义/站在.gitignore。
问题是git并不关心.gitignore,因为跟踪了所有文件。
我看到所有使用id
我试试:
id
结果是本地的文件现在没有跟踪,.gitignore正在工作!!但是!!在提交并推送我的远程仓库后删除此文件。
现在,我怎样才能解开文件?
所以下一个克隆这个回购的人会错过很多目录。
答案 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将失败(优雅地),例如合并时提交;因此,如果上游更改了假定未跟踪文件,则需要手动处理该情况。