git add
一、前言
git add命令主要用于把我们要提交的文件的信息添加到索引库中。当我们使用git commit时,git将依据索引库中的内容来进行文件的提交。
二、基本
git add <path>
表示add to index only files created or modified and not those deleted
我通常是通过git add <path>
的形式把我们<path>
添加到索引库中,<path>
可以是文件也可以是目录。
git不仅能判断出<path>
中,修改(不包括删除)的文件,还能判断出新添的文件,并把它们的信息添加到索引库中。
三、git add -u
git add -u
表示 add to index only files modified or deleted and not those created
git add -u [<path>]
:把<path>
中所有tracked文件中被修改过或已删除文件的信息添加到索引库。它不会处理untracted的文件。省略<path>
表示.,即当前目录。
四、git add -A
git add -A:<path>
表示把<path>
中所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到索引库。省略<path>
表示.,即当前目录。
五、git add -i
我们可以通过git add -i [<path>]
命令查看<path>
中所有被修改过或已删除但没有提交的文件。
并通过其revert子命令可以查看<path>
中所有untracted的文件,同时进入一个子命令系统。
5.1、revert子命令
把已经添加到索引库中的文件从索引库中剔除。
5.2、update子命令
把已经tracked的文件添加到索引库中。
5.3、add untracked子命令
通过add untracked子命令可以把还没被git管理的文件添加到索引库中。
5.4、diff子命令
可以通过diff子命令比较索引库中文件和原版本的差异
5.5、status子命令
功能上和git add -i相似
5.6、quit子命令
用于退出git add -i命令系统
六、帮助
我们可以通过git add -h
命令来看git add命令的帮助文档。
git commit
一、文件状态
一般仓库中的文件可能存在这三种状态:
1) Untracked files->文件未被跟踪
2)Changes to be committed->文件已暂存,这是下次提交的内容
3)Changes but not updated->文件被修改,但并没有添加到暂存区。如果commit时没有带 -a选项,这个状态下的文件不会被提交。
二、提交
git 提交的命令为:git commit
2.1、 git commit与git commit -a
git commit提交的是暂存区里面的内容,也就是Changes to be committed中的文件。
git commit -a 除了将暂存区里的文件提交外,还提交Changes but not updated中的文件。
2.2、添加提交信息
如果直接运行git commit (-a)则会默认使用vi添加描述。也可以使用git config –global core.editor命令更改为你喜欢的编辑器。还有一个方法就是使用 -m 选项直接添加提交信息。
$git commit -a -m “commit info”
三、修改/取消
有时候我们会发现有几个文件漏了提交或者想修改一下提交信息,又或者忘记使用-a选项导致一些文件没有被提交,我们希望对上一次提交进行修改,或者说取消上一次提交,这时候我们需要使用 –amend选项。
$git commit --amend
可以对上一次提交进行修改。
又或者我们发现在提交时忘记使用-a选项,导致Changes but not updated中的内容没有被提交,我们可以使用:
$git commit --amend -a