8-git-4-add

概述

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来选择是否提交,交替循环。