所谓 add
,就是 add file into staged area
。
新文件
add
是一个比较重要的操作,假设有一个空目录,此时里面没有任何文件。
我们新建一个文件,这个文件就是处于 untrack
状态的。
修改这个文件,依然是处于 untrack
状态。
使用 add
操作,将新文件添加到暂存区(staged
),并且将文件标记为 track
,这是 add
比较清晰的两个作用。
使用 commit
操作,生成快照,同时 clean
暂存区,初始化一切。
旧文件
另外一种情况,假设已经有了旧文件,文件处于 track
状态。
此时修改文件,如果使用 status
命令查看,会提示 Changes not staged for commit
,大意就是此时已经更新文件了,但是更新的内容还没有暂存起来,提示使用 add
操作进行暂存。
按照提示使用 add
操作后,使用 status
命令查看,会发现处于已暂存状态。Changes to be committed
,如果此时提交,那么该文件此时此刻的版本将被留存在历史记录中。
与 commit
搭配使用
如果发现不断的 add
、commit
比较麻烦,可以使用 commit
命令 加-a
参数,Git
会自动更新已经跟踪过的文件,更新暂存区。
但这里有个地方需要留意,-a
参数并不会更新未跟踪的文件。
总结
关于 add
,最值得留意的就是一旦修改文件,必须重新暂存,否则生成快照( commit
)的依然是上次 add 时的状态,快照只从暂存区来。
总结起来,对于新文件,add
会跟踪文件,同时将文件存入暂存区,如果是旧文件,可以按照本地文件更新暂存区的文件。
除了上面提到的,还有一种常见的情况,当文件出现冲突时,经常需要人为解决冲突,在修改之后,可以使用 add
操作将有冲突的文件标记为已经解决状态。