将忽略的文件保持在git状态之外

knu*_*ton 115 git gitignore

我想阻止Git显示被忽略的文件git status,因为在更改但未更新的文件列表中有大量文档和配置文件,使列表半无用.

Git显示这些文件是正常的吗?

我将忽略信息放在.gitignoreGit存储库的根目录中的一个文件中,并且在使用时不会添加它们,git add .但它们似乎也没有被完全忽略,因为它们出现在上述列表中并且没有显示在列表中印刷的git ls-files --others -i --exclude-standard.只~/.gitignore显示与模式匹配的文件.

难道是因为在较早阶段我没有忽视它们,因此它们至少犯了一次?

MBO*_*MBO 206

正如我在本文中发现的那样,.gitignore仅适用于未跟踪的文件.如果您将文件添加到存储库,则可以:

git update-index --assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)

或者从存储库中删除它们

git rm --cached <file>
Run Code Online (Sandbox Code Playgroud)

编辑

这篇文章也解释了这一点

  • @Cfreak对于你的文件,`git status - <file>`show"没有为commit"或"Untracked files"进行更改?前者是如果你已经有索引文件,我需要更多的信息来解决你的问题(更好地创建单独的问题显示git消息,并在评论中发布链接到它).后者适用于未被git(尚未)跟踪的文件,但不在`.gitignore`文件中,可以自由添加到索引中. (5认同)
  • update-index对我有用.git状态显示忽略文件的类似问题...非常烦人.+1 (3认同)
  • 我仍然有这个问题。以上命令都不适合我。在这两种情况下,git都说它不知道有问题的文件,但是它们仍然以git status出现: (3认同)
  • 第一个选项就像一个魅力。我已经尝试过第二个,它导致文件被暂存为“已删除”,我绝对不希望这样。 (3认同)

new*_*eek 14

我也遇到了这个问题,这可能是因为你在GIT的初始提交流程中将被忽略的目录/文件添加到.gitignore后被添加到.gitignore.

所以你需要像这样清除git跟踪缓存:

git rm --cached -r [folder/file name]

更详细的解释可以在这里阅读:http: //www.frontendjunkie.com/2014/12/stop-git-from-tracking-changes-to.html

上面的命令还从远程GIT源删除了文件夹/文件的残余.所以你的GIT回购变得干净了.


Ram*_*mis 5

问题可能是该文件仍在git缓存中。要解决此问题,需要重置git cache。

重置git缓存。这将从索引中删除所有内容。

git rm -r --cached . 
Run Code Online (Sandbox Code Playgroud)

再次添加所有文件:

git add . 
Run Code Online (Sandbox Code Playgroud)

承诺:

git commit -m ".gitignore was fixed." 
Run Code Online (Sandbox Code Playgroud)