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
。即還沒添加到索引庫中。