## git add 添加文件到緩存
在 Git 中,在提交你修改的文件之前,你需要把它們添加到緩存。如果該文件是新創建的,你可以執行?`git add`?將該文件添加到緩存,但是,即使該文件已經被追蹤了 —— 也就是說,曾經提交過了 —— 你仍然需要執行?git add 將新更改的文件添加到緩存去。讓我們看幾個例子:
回到我們的 Hello World 示例,初始化該項目之后,我們就要用?`git add`?將我們的文件添加進去了。 我們可以用?`git status`?看看我們的項目的當前狀態。
~~~
$ git status -s
?? README
?? hello.rb
~~~
我們有倆尚未被追蹤的文件,得添加一下。
~~~
$ git add README hello.rb
~~~
現在我們再執行?`git status`,就可以看到這倆文件已經加上去了。
~~~
$ git status -s
A README
A hello.rb
~~~
新項目中,添加所有文件很普遍,可以在當前工作目錄執行命令:`git add .`。 因為 Git 會遞歸地將你執行命令時所在的目錄中的所有文件添加上去,所以如果你將當前的工作目錄作為參數, 它就會追蹤那兒的所有文件了。如此,`git add .`?就和?`git add README hello.rb`?有一樣的效果。 此外,效果一致的還有?`git add *`,不過那只是因為我們這還木有子目錄,不需要遞歸地添加新文件。
好了,現在我們改個文件,再跑一下?`git status`,有點古怪。
~~~
$ vim README
$ git status -s
AM README
A hello.rb
~~~
“AM” 狀態的意思是,這個文件在我們將它添加到緩存之后又有改動。這意味著如果我們現在提交快照, 我們記錄的將是上次跑?`git add`?的時候的文件版本,而不是現在在磁盤中的這個。 Git 并不認為磁盤中的文件與你想快照的文件必須是一致的 —— (如果你需要它們一致,)得用?`git add`?命令告訴它。
> **一言以蔽之**, 當你要將你的修改包含在即將提交的快照里的時候,執行?`git add`。 任何你沒有添加的改動都不會被包含在內 —— 這意味著你可以比絕大多數其他源代碼版本控制系統更精確地歸置你的快照。
請查看《Pro Git》中?`git add`?的 “-p” 參數,以了解更多關于提交文件的靈活性的例子。