为什么.gitignore中的目录仍被“跟踪”;git状态“;?
My.gitignore文件包括为什么.gitignore中的目录仍被“跟踪”;git状态“;?,git,gitignore,status,Git,Gitignore,Status,My.gitignore文件包括 project/app/__pycache__ 但当我运行git status时,它会报告此目录中文件的更改 mydomain:main satishp$ git status On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: (use "git add/rm <file>..." to update
project/app/__pycache__
但当我运行git status时,它会报告此目录中文件的更改
mydomain:main satishp$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: project/app/__pycache__/__init__.cpython-37.pyc
deleted: project/app/__pycache__/models.cpython-37.pyc
mydomain:main satishp$git状态
论分行行长
您的分支机构是最新的“来源/主”。
未为提交而暂存的更改:
(使用“git add/rm…”更新将提交的内容)
(使用“git签出--…”放弃工作目录中的更改)
已删除:project/app/\uuuuu pycache\uuuuuuu/\uuuuuu init\uuuuuuuuuuuuuuu.cpython-37.pyc
已删除:project/app/_-pycache\u_/models.cpython-37.pyc
在.gitignore中包含此目录不应该阻止这一点吗?还是我做错了什么?那是因为在将它添加到
.gitignore
之前,它已经被跟踪了。因此,它现在将其解释为已删除。要修复此问题,您必须从以前的所有提交中删除该文件。这是一个常见的场景:您提交了一些文件,直到后来才意识到应该忽略它们
一种解决方案是清除Git缓存(改编自):
.gitignore
(听起来你已经这样做了)git状态
必须返回“无需提交,工作树干净”)git rm
和--cached
选项删除在被忽略之前意外提交的有问题的文件/模式,例如git rm-r--cached path/to/file
git add.
git commit-m“清理被忽略的文件”
这将使您的回购走上正确的轨道。如果在添加要忽略的路径之前对其进行了跟踪,则需要明确取消跟踪文件夹。这是否回答了您的问题?旁注:Git根本不跟踪目录,只跟踪单个文件。
git status
命令有时会通过列出目录名来汇总未跟踪的文件,以避免列出所有文件的名称,但跟踪或未跟踪是逐文件的。相比之下,忽略模式实际上可以忽略整个目录。相互作用是。。。这回答了你的问题吗?
git rm -r --cached project/app/__pycache__