Homestead 5.2中git status --ignored无法显示全部忽略文件求助
git status --ignored仅显示顶层忽略文件的问题 我之前也碰到过类似的Git忽略文件显示不一致的坑,结合你调整过项目目录结构的情况,给你几个实用的排查和解决思路:
检查Git版本差异
不同Git版本对--ignored参数的处理可能不一样,旧版本的Git默认只会显示顶层目录的忽略文件,而新版本支持递归显示所有忽略项。先在Vagrant Shell里执行git --version,再和本地终端(PHPStorm/Mac)的Git版本对比。如果Vagrant里的Git版本偏低,尝试升级环境里的Git包(比如Debian/Ubuntu用apt-get update && apt-get install git,CentOS用yum update git)。确认Git仓库根目录是否正确
你调整了目录结构(/project /laravel-stuff /public_html),要确保在Vagrant中执行命令时处于正确的Git仓库根目录。可以在Vagrant里运行git rev-parse --show-toplevel,查看输出的根路径是否和本地终端一致。如果不小心进入了子目录而非仓库根,git status --ignored自然只会显示当前目录的忽略项。排查.gitignore规则与目录权限
目录调整后,.gitignore里的相对路径规则可能在Vagrant环境下解析异常。可以用git check-ignore -v 子目录/某个被忽略的文件命令,测试规则是否生效。另外,Vagrant共享目录的权限问题也可能导致Git无法读取子目录的.gitignore或识别忽略文件,你可以手动查看子目录的.gitignore内容,确保文件权限正常(比如ls -l 子目录/.gitignore)。统一Git配置项
本地和Vagrant的Git配置可能存在差异,尤其是status.showIgnored这个控制忽略文件显示的配置。在Vagrant里执行git config --get status.showIgnored,和本地的配置对比。如果Vagrant里没有设置或者值为traditional,可以运行git config --global status.showIgnored all来开启全量忽略文件显示。刷新Git索引
Vagrant共享目录有时候会有文件系统同步延迟,导致Git索引没有及时更新。在Vagrant的项目根目录执行git update-index --refresh,刷新索引后再运行git status --ignored,看看是否能显示全部忽略文件。
内容的提问来源于stack exchange,提问作者mike

