git add
命令將檔案內容新增到索引(將修改新增到暫存區)。也就是將要提交的檔案的資訊新增到索引庫中。
簡介
git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
[--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]
[--chmod=(+|-)x] [--] [<pathspec>…?]
此命令將要提交的檔案的資訊新增到索引庫中(將修改新增到暫存區),以準備為下一次提交分段的內容。 它通常將現有路徑的當前內容作為一個整體新增,但是通過一些選項,它也可以用於新增內容,只對所應用的工作樹檔案進行一些更改,或刪除工作樹中不存在的路徑了。
「索引」儲存工作樹內容的快照,並且將該快照作為下一個提交的內容。 因此,在對工作樹進行任何更改之後,並且在執行git commit
命令之前,必須使用git add
命令將任何新的或修改的檔案新增到索引。
該命令可以在提交之前多次執行。它只在執行git add
命令時新增指定檔案的內容; 如果希望隨後的更改包含在下一個提交中,那麼必須再次執行git add
將新的內容新增到索引。
git status
命令可用於獲取哪些檔案具有為下一次提交分段的更改的摘要。
預設情況下,git add
命令不會新增忽略的檔案。 如果在命令列上顯式指定了任何忽略的檔案,git add
命令都將失敗,並顯示一個忽略的檔案列表。由Git執行的目錄遞回或檔案名遍歷所導致的忽略檔案將被預設忽略。 git add
命令可以用-f(force)
選項新增被忽略的檔案。
以下是一些範例 -
新增documentation
目錄及其子目錄下所有*.txt
檔案的內容:
$ git add documentation/*.txt
注意,在這個例子中,星號
*
是從shell參照的; 這允許命令包含來自Documentation/
目錄和子目錄的檔案。
將所有 git-*.sh
指令碼內容新增:
$ git add git-*.sh
因為這個例子讓shell擴充套件星號(即明確列出檔案),所以它不考慮子目錄中的檔案,如:subdir/git-foo.sh
這樣的檔案不會被新增。
基本用法
git add <path>
通常是通過git add <path>
的形式把<path>
新增到索引庫中,<path>
可以是檔案也可以是目錄。
git不僅能判斷出<path>
中,修改(不包括已刪除)的檔案,還能判斷出新添的檔案,並把它們的資訊新增到索引庫中。
$ git add . # 將所有修改新增到暫存區
$ git add * # Ant風格新增修改
$ git add *Controller # 將以Controller結尾的檔案的所有修改新增到暫存區
$ git add Hello* # 將所有以Hello開頭的檔案的修改新增到暫存區 例如:HelloWorld.txt,Hello.java,HelloGit.txt ...
$ git add Hello? # 將以Hello開頭後面只有一位的檔案的修改提交到暫存區 例如:Hello1.txt,HelloA.java 如果是HelloGit.txt或者Hello.java是不會被新增的
git add -u [<path>]
: 把<path>
中所有跟蹤檔案中被修改過或已刪除檔案的資訊新增到索引庫。它不會處理那些不被跟蹤的檔案。省略<path>
表示 .
,即當前目錄。
git add -A
: [<path>
表示 .
,即當前目錄。
git add -i
我們可以通過git add -i [<path>]
命令檢視revert
子命令可以檢視<path>
中所有未跟蹤的檔案,同時進入一個子命令系統。
比如:
$ git add -i
staged unstaged path
1: +0/-0 nothing branch/t.txt
2: +0/-0 nothing branch/t2.txt
3: unchanged +1/-0 readme.txt
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
這裡的t.txt
和t2.txt
表示已經被執行了git add
,待提交。即已經新增到索引庫中。readme.txt
表示已經處於tracked下,它被修改了,但是還沒有執行git add
。即還沒新增到索引庫中。