10.6 使用git add-i选择性添加
刚刚创建的Hello World程序还没有添加到版本库中,在src目录下有下列文件:
$cd/path/to/my/workspace/demo
$ls src
hello main.c main.o Makefile version.h version.h.in
这些文件中hello、main.o和version.h都是在编译时生成的文件,不应该加入到版本库中。那么选择性添加文件除了针对文件逐一使用git add命令外,还有其他办法吗?通过使用-i参数调用git add就是一个办法,它提供了一个交互式的界面。
执行git add-i命令,进入一个交互式界面,首先显示的是工作区状态。显然因为版本库进行了清理,所以显得很“干净”。
$git add-i
staged unstaged path
Commands
1:status 2:update 3:revert 4:add untracked
5:patch 6:diff 7:quit 8:help
What now>
交互式界面显示了命令列表,可以使用数字或加亮显示的命令首字母,选择相应的功能。对于此例需要将新文件加入到版本库中,所以选择“4”。
What now>4
1:src/Makefile
2:src/hello
3:src/main.c
4:src/main.o
5:src/version.h
6:src/version.h.in
Add untracked>>
当选择了“4”之后,就进入了"Add untracked"的界面,显示了本地新增(尚不在版本库中)的文件列表,而且提示符也变了,由"What now>"变为"Add untracked>>"。依次输入1、3、6将源代码添加到版本库中。
输入“1”:
Add untracked>>1
*1:src/Makefile
2:src/hello
3:src/main.c
4:src/main.o
5:src/version.h
6:src/version.h.in
输入“3”:
Add untracked>>3
*1:src/Makefile
2:src/hello
*3:src/main.c
4:src/main.o
5:src/version.h
6:src/version.h.in
输入“6”:
Add untracked>>6
*1:src/Makefile
2:src/hello
*3:src/main.c
4:src/main.o
5:src/version.h
*6:src/version.h.in
Add untracked>>
每次输入文件序号,对应的文件前面都添加一个星号,代表将此文件添加到暂存区。在提示符"Add untracked>>"处按回车键,完成文件添加,返回主界面。
Add untracked>>
added 3 paths
Commands
1:status 2:update 3:revert 4:add untracked
5:patch 6:diff 7:quit 8:help
What now>
此时输入“1”查看状态,可以看到三个文件添加到暂存区中。
What now>1
staged unstaged path
1:+20/-0 nothing src/Makefile
2:+10/-0 nothing src/main.c
3:+6/-0 nothing src/version.h.in
Commands
1:status 2:update 3:revert 4:add untracked
5:patch 6:diff 7:quit 8:help
输入“7”退出交互界面。
查看文件状态,可以发现三个文件被添加到暂存区中。
$git status-s
A src/Makefile
A src/main.c
A src/version.h.in
?? src/hello
?? src/main.o
?? src/version.h
完成提交。
$git commit-m "Hello world initialized."
[master d71ce92]Hello world initialized.
3 files changed,36 insertions(+),0 deletions(-)
create mode 100644 src/Makefile
create mode 100644 src/main.c
create mode 100644 src/version.h.in