hudada-cli
Version:
专为程序员准备的本地文档搜索,快捷开发工具
65 lines (38 loc) • 2.03 kB
Markdown
# git add
## 概述
`git add`命令用于将变化的文件,从工作区提交到暂存区。它的作用就是告诉 Git,下一次哪些变化需要保存到仓库区。用户可以使用`git status`命令查看目前的暂存区放置了哪些文件。
```bash
# 将指定文件放入暂存区
$ git add <file>
# 将指定目录下所有变化的文件,放入暂存区
$ git add <directory>
# 将当前目录下所有变化的文件,放入暂存区
$ git add .
```
## 参数
`-u`参数表示只添加暂存区已有的文件(包括删除操作),但不添加新增的文件。
```bash
$ git add -u
```
`-A`或者`--all`参数表示追踪所有操作,包括新增、修改和删除。
```bash
$ git add -A
```
Git 2.0 版开始,`-A`参数成为默认,即`git add .`等同于`git add -A`。
`-f`参数表示强制添加某个文件,不管`.gitignore`是否包含了这个文件。
```bash
$ git add -f <fileName>
```
`-p`参数表示进入交互模式,指定哪些修改需要添加到暂存区。即使是同一个文件,也可以只提交部分变动。
```bash
$ git add -p
```
注意,Git 2.0 版以前,`git add`默认不追踪删除操作。即在工作区删除一个文件后,`git add`命令不会将这个变化提交到暂存区,导致这个文件继续存在于历史中。Git 2.0 改变了这个行为。
## 实现细节
通过`git add`这个命令,工作区里面那些新建或修改过的文件,会加入`.git/objects/`目录,文件名是文件内容的 SHA1 哈希值。`git add`命令同时还将这些文件的文件名和对应的哈希值,写入`.git/index`文件,每一行对应一个文件。
下面是`.git/index`文件的内容。
```
data/letter.txt 5e40c0877058c504203932e5136051cf3cd3519b
```
上面代码表示,`data/letter.txt`文件的哈希值是`5e40c087...`。可以根据这个哈希值到`.git/objects/`目录下找到添加后的文件。
dfdadf fdsaffd fds dfs fds