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

Git如何仅提交指定跟踪目录的变更,排除其他跟踪目录?

分步提交不同目录变更的解决方案

提交dir2的所有变更(含已跟踪修改与未跟踪新增)

  1. 把dir2下所有变更加入暂存区:

    git add dir2/
    

    这个命令会递归处理dir2下的所有内容:已跟踪文件的修改会同步到暂存区,未跟踪的新文件/子目录也会被添加进来。

  2. 提交暂存区中dir2的内容:

    git commit -m "提交dir2目录的所有变更"
    

    注意:不要加-a参数,否则Git会自动把所有已跟踪文件的修改(包括dir1的)加入暂存区,导致提交内容混入dir1的变更。

提交dir1的所有变更

完成dir2的提交后,用同样的逻辑处理dir1:

  1. 将dir1下所有变更加入暂存区:
    git add dir1/
    
  2. 提交dir1的变更:
    git commit -m "提交dir1目录的所有变更"
    

解决git commit dir2/ --dry-run包含dir1内容的问题

如果执行该命令时出现dir1的内容,本质是暂存区中已有dir1的修改。你可以先通过以下命令确认暂存区状态:

git diff --cached

根据情况处理:

  • 若想保留dir1的修改到后续提交,直接按上面的步骤提交dir2即可(提交dir2不会影响暂存区里的dir1内容);
  • 若想清空暂存区重新处理,执行:
    git reset HEAD
    
    之后再重新执行git add dir2/和git commit。

进阶技巧:强制仅提交指定目录

如果担心暂存区已有其他内容干扰,可以用--only参数强制Git只处理dir2的内容:

git add dir2/ && git commit -m "提交dir2的所有变更" --only dir2/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 13:25:03