如何让git停止监控指定目录 执行git status返回非仓库提示
解决方案
前置排查
先在目标目录执行命令,确认仓库所属场景:ls -la | grep .git
- 若输出包含
.git文件夹:当前目录本身就是独立Git仓库根目录,对应场景1 - 若无输出:当前目录是上级Git仓库的子目录,对应场景2
场景1:当前目录为独立Git仓库根目录
直接删除目录内的.git隐藏文件夹即可取消Git监控:
rm -rf .git
执行完成后再运行git status,就会返回fatal: not a git repository的预期结果。
场景2:当前目录为上级Git仓库的子目录
你之前执行git rm -r --cached报错,是因为该命令必须在Git仓库根目录执行,子目录内没有.git文件时就会识别不到仓库报错。
要实现进入该目录执行git status返回非仓库提示,同时停止上级仓库对该目录的监控,按以下步骤操作:
- 在当前子目录创建无效.git文件,阻断Git向上级查找仓库的逻辑:
echo "invalid" > .git
- 回到上级Git仓库的根目录,执行以下操作移除跟踪:
- 把目标子目录加入忽略规则:
echo "替换为你的子目录名称/" >> .gitignore
- 从Git缓存中移除该子目录的历史跟踪记录:
git rm -r --cached 替换为你的子目录名称/
- 提交变更生效:
git add .gitignore git commit -m "停止监控指定子目录"
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

