首页/开发/Git 与协作速查/git add -N 记录新增意图
Git 基础与命令88 条

git add -N 记录新增意图

intent-to-add 把新文件登记进索引但不暂存内容,让 git diff 能看到未暂存的新文件差异,便于走补丁式暂存流程。

Git 与协作速查开发更新于 2026-10-13

intent-to-add 是什么

git add -N(等价 --intent-to-add)把新文件登记进索引,但只记录「这里有个文件」,不暂存它的内容。效果是让新文件出现在 git diff 的输出里,从而能走补丁式的暂存流程。它常用于需要逐块挑选内容的场合:先把新文件登记,再配合 git add -p 交互式选择要提交的片段。注意登记不等于暂存,提交前必须真正 add。

基本信息

用途让新文件出现在 git diff 中
语法git add -N <文件>
等价git add --intent-to-add
配套git add -p 逐块选择暂存内容
平台任意 Git 客户端

典型使用场景

  • 新写的文件想用补丁式流程逐块提交,需要先让它出现在 diff 里
  • 把新增文件与旧文件的改动一起评审,需要统一视图
  • 检查器或格式化工具只在 diff 可见时才生效
  • 提交前先确认新文件内容,再决定暂存哪些片段
  • 在合并或变基前快速把新文件纳入 diff 对比范围
  • 排查「为什么这个新文件没出现在 diff 里」

常用示例

常用示例
git add -N newfile.py        # 登记新文件但不暂存内容
git diff                     # 新文件内容以新增形式出现
git add -p newfile.py        # 交互式选择要提交的片段
git status                   # 复核最终暂存状态
git commit -m 'feat: 新增校验模块'

几种登记方式的区别

写法索引中的内容
git add <文件>完整内容,已暂存
git add -N <文件>空内容占位,未暂存
git add -p交互式选择片段
登记后别忘了真正 git add:直接把 intent-to-add 的文件提交上去,会把空内容记录进版本库。
用 git status 复核最容易发现问题:登记状态下文件既显示为新增又未暂存,看到这个组合就说明还没真正加入内容。

补丁式提交的完整步骤

  • git add -N 把新文件登记进索引
  • git diff 或 git diff --cached 确认能看到新文件内容
  • git add -p 逐块挑选要提交的片段
  • git commit 提交,再用 git status 复核剩余改动
它只解决「新文件在 diff 里不可见」这一个问题,与取消暂存是相反方向的操作;两件事都围绕索引展开,弄清索引概念后就不容易混淆。

易错点

  • 提交空占位后需要 git add 补内容再 amend,注意 amend 会改变提交号
  • 不理解用途时容易误以为已经暂存,提交前用 git status 复核文件状态
  • 把 -N 与 -p 的顺序记反会得到与预期不同的暂存结果,先登记再逐块选择
  • 登记后的文件在部分工具里显示为「新文件但无改动」,评审者容易误判,提交前补齐内容
  • 在编写中尚未完成的文件上使用登记,一不小心就把半成品提交,先确认内容可用

数据来源与参考

  • Git 官方文档:git-add(--intent-to-add)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌