You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用git add无法暂存子目录中修改文件的问题

解决Git无法暂存子目录中.cs文件的问题

问题场景

执行git add .或git add subdirectory1/ subdirectory2/后,无法暂存子目录中的.cs文件,git status输出如下:

Changes not staged for commit:
modified: subdirectory1 (modified content)
modified: subdirectory2 (modified content)

no changes added to commit (use “git add” and/or “git commit -a”)

已确认父目录和子目录的.gitignore均未包含*.cs规则,排除忽略规则影响。

解决步骤

1. 排查子目录是否被识别为子模块

当git status显示子目录为modified: [dir] (modified content)格式时,大概率这些目录被标记为子模块。

  • 运行以下命令确认:
    git submodule status
    
  • 若确认为子模块:
    • 若需暂存子模块内的变更,可使用递归添加命令:
      git add --recurse-submodules subdirectory1/ subdirectory2/
      
    • 若并非有意设置子模块,需移除子模块关联:
      1. 编辑.gitmodules文件,删除对应子模块的配置条目
      2. 执行命令清除缓存的子模块记录:
        git rm --cached subdirectory1 subdirectory2
        
      3. 重新添加子目录:
        git add subdirectory1/ subdirectory2/
        

2. 重置Git索引缓存

若不是子模块问题,可能是索引缓存异常导致文件未被追踪:

git rm --cached -r .
git add .

该命令会清除所有已缓存的文件索引,重新追踪所有目录及文件,包括目标.cs文件。

3. 检查隐含忽略规则

即使.gitignore无相关规则,也可能存在全局忽略或本地隐含忽略:

  • 运行以下命令检查目标文件是否被忽略:
    git check-ignore -v subdirectory1/示例文件.cs
    
  • 若有输出,根据提示调整对应忽略文件(如全局.gitignore或.git/info/exclude)。

内容的提问来源于stack exchange,提问作者Garrett Jennings

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 05:22:13