概述
git add
命令用于将变化的文件,从工作区提交到暂存区。
将指定文件放入暂存区
git add <file>
将指定目录下所有变化的文件,放入暂存区
git add <directory>
将当前目录下所有变化的文件,放入暂存区
git add .
参数
-u
参数表示只添加暂存区已有的文件(包括删除操作),但不添加新增的文件。
git add -u
-A
或者--all
参数表示追踪所有操作,包括新增、修改和删除。
Git 2.0 版开始,-A
参数成为默认,即git add .
等同于git add -A
。
git add -A
-f
参数表示强制添加某个文件,不管.gitignore
是否包含了这个文件。
git add -f <fileName>
-p
参数表示进入交互模式,指定哪些修改需要添加到暂存区。即使是同一个文件,也可以只提交部分变动。
未跟踪(即新增的)文件不在此参数范围内
git add -p
详解
交互模式可以挑选一部分改动进行提交
交互地在索引和工作树之间选择补丁块并将它们添加到索引中。
这让用户有机会在将修改后的内容添加到索引之前查看差异。
输入 git add -p
进入 patch mode
, 此时 git
会自动将改动切分成多个片段,并展示第一个片段,提示你进行选择。
提示语句是 Stage this hunk [y,n,q,a,d,/,s,e,?]?
这些字母都是什么意思呢? 输入?
回车,可以查看详细的帮助信息。
y - stage this hunk
n - do not stage this hunk
q - quit; do not stage this hunk or any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk or any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help
y - 暂存此区块
n - 不暂存此区块
q - 退出;不暂存包括此块在内的剩余的区块
a - 暂存此块与此文件后面所有的区块
d - 不暂存此块与此文件后面所有的 区块
g - 选择并跳转至一个区块
/ - 搜索与给定正则表达式匹配的区块
j - 暂不决定,转至下一个未决定的区块
J - 暂不决定,转至一个区块
k - 暂不决定,转至上一个未决定的区块
K - 暂不决定,转至上一个区块
s - 将当前的区块分割成多个较小的区块
e - 手动编辑当前的区块
? - 输出帮助
如果你想分开提交的话,行 s
分割,然后使用y或者n来选择是否提交,交替循环。