互动添加

git add -i(或 --interactive)将为你提供一个交互式界面,你可以在其中编辑索引,以准备你希望在下次提交时拥有的内容。你可以添加和删除对整个文件的更改,添加未跟踪的文件并从跟踪中删除文件,还可以选择要放入索引的更改子部分,方法是选择要添加的更改块,拆分这些块,甚至编辑差异。Git 的许多图形提交工具(例如 git gui)都包含这样的功能; 这可能比命令行版本更容易使用。

它是非常有用的(1)如果你想要在单独的提交中进行工作目录中的纠缠更改,而不是一次性提交(2),如果你处于交互式 rebase 的中间并且想要分割大提交。

$ git add -i
           staged     unstaged path
  1:    unchanged        +4/-4 index.js
  2:        +1/-0      nothing package.json

###  Commands 
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
What now>

此输出的上半部分显示分解为分阶段和非分阶段列的索引的当前状态:

  1. index.js 已添加 4 行,删除 4 行。它目前没有上演,因为目前的状态报告没有变化。当此文件进入暂存状态时,+4/-4 位将被转移到分阶段列,未分段列将显示为
  2. package.json 已添加一条线并已上演。没有进一步的更改,因为它已经被暂停列下的行指示。

下半部分显示了你可以做的事情。输入数字(1-8)或字母(surapdqh)。

status 显示的输出与上面输出的顶部相同。

update 允许你使用其他语法对暂存提交进行进一步更改。

revert 会将暂存的提交信息还原为 HEAD。

add untracked 允许你添加以前未被版本控制跟踪的文件路径。

patch 允许从类似于 status 的输出中选择一条路径进行进一步分析。

diff 显示将要提交的内容。

quit 退出命令。

help 提供了使用此命令的进一步帮助。