2010-02-03 121 views

回答

59

它是git陷阱之一mentioned here(pre Git 2.0)。

git add .只增加了什麼,沒有被刪除(如果跟蹤)。

git add . 
git commit 
git status 
//hey! why didn't it commit my deletes?, Oh yeah, silly me 
git add -u . 
git commit --amend 

git add -A會照顧兩個步驟...


隨着Git 2.0, git add -A is default

git add <path>是一樣的「git add -A <path>」現在,讓 「git add dir/」會發現你的路徑從目錄和 記錄去除去除。
在舊版本的Git中,「git add <path>」用於忽略刪除。

你可以說「git add --ignore-removal <path>」到 如果你真的想在<path>上只添加添加或修改的路徑。


警告(git1.8.3 April 2013, for upcoming git2.0)。
我已經修改我的答案說git add -u .,而不是git add -u

git add -uGit中2.0對整個樹操作的一致性「git commit -a」等命令。
由於沒有任何機制可以使「git add -u」的行爲與「git add -u .」相同,因此對於習慣於「git add -u」(無pathspec)的用戶來說,更新僅適用於當前子目錄中的路徑以開始訓練其路徑的用戶是 手指在Git 2.0到來之前明確表示「git add -u .」。

正如我在 「e

+5

感謝您的回答和一個例子。 「嘿!」線真的幫助我。 – 2010-02-03 14:15:42

+0

@TK:是的,Benjol(http://stackoverflow.com/users/11410/benjol)的例子是一個很好的例子。 – VonC 2010-02-03 14:18:28

+0

看來我們不需要把'.'(pathspec)和Git 2.x結合起來。它在我測試時可以找到。 – 2015-07-24 03:26:52

19

就像手冊說的那樣:git add .會在當前目錄中添加所有文件,而git add -u .只會添加那些已經被跟蹤的文件。

+7

提到的'添加-u'也將上演刪除。 – 2010-02-03 07:56:31

+0

只有當被刪除的文件被跟蹤時; – 2010-02-03 07:57:59

+0

add -u是提交-a等效的一種(在它操作的文件中)。 – 2010-02-03 09:26:17

10

git add documentaiton

git add . 

從當前目錄

git add -u 

只更新文件當前正在跟蹤添加的所有文件。