天天看點

git add

一、前言

git add指令主要用于把我們要送出的檔案的資訊添加到索引庫中。當我們使用git commit時,git将依據索引庫中的内容來進行檔案的送出。

二、基本

git add <path>表示 add to index only files created or modified and not those deleted 

我通常是通過git add <path>的形式把我們<path>添加到索引庫中,<path>可以是檔案也可以是目錄。

git不僅能判斷出<path>中,修改(不包括已删除)的檔案,還能判斷出新添的檔案,并把它們的資訊添加到索引庫中。

三、git add -u

git add -u 表示 add to index only files modified or deleted and not those created 

git add -u [<path>]: 把<path>中所有tracked檔案中被修改過或已删除檔案的資訊添加到索引庫。它不會處理untracted的檔案。

省略<path>表示.,即目前目錄。

四、git add -A

git add -A: [<path>]表示把<path>中所有tracked檔案中被修改過或已删除檔案和所有untracted的檔案資訊添加到索引庫。

五、git add -i

我們可以通過git add -i [<path>]指令檢視<path>中被所有修改過或已删除檔案但沒有送出的檔案,

并通過其revert子指令可以檢視<path>中所有untracted的檔案,同時進入一個子指令系統。

比如:

 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

What now>

這裡的t.txt和t2.txt表示已經被執行了git add,待送出。即已經添加到索引庫中。

readme.txt表示已經處于tracked下,它被修改了,但是還沒有被執行了git add。即還沒添加到索引庫中。

5.1、revert子指令

可以通過git add -i的revert子指令(3: [r]evert)把已經添加到索引庫中的檔案從索引庫中剔除。

(3: [r]evert)表示通過3或r或revert加回車執行該指令。執行該指令後,git會例出索引庫中的檔案清單.

然後通過數字來選擇。輸入"1"表示git會例出索引庫中的檔案清單中的第1個檔案。

"1-15"表示git會例出索引庫中的檔案清單中的第1個檔案到第15個檔案.回車将執行。

如果我們不輸入任何東西,直接回車,将結束revert子指令,傳回git add -i的主指令行。

5.2、update子指令

可以通過update子指令(2: [u]pdate)把已經tracked的檔案添加到索引庫中。其操作和revert子指令類似。

5.3、add untracked子指令

通過add untracked子指令(4: [a]dd untracked)可以把還沒被git管理的檔案添加到索引庫中。其操作和revert子指令類似。

5.4、diff子指令

可以通過diff子指令(6: [d]iff)可以比較索引庫中檔案和原版本的差異。其操作和revert子指令類似。

5.5、status子指令

status子指令(1: [s]tatus)功能上和git add -i相似

5.6、quit子指令

quit子指令(7: [q]uit)用于退出git add -i指令系統

六、幫助

我們可以通過git add -h指令來看git add指令的幫助文檔。

 git add -h

usage: git add [options] [--] <filepattern>...

    -n, --dry-run         dry run

    -v, --verbose         be verbose

    -i, --interactive     interactive picking

    -p, --patch           select hunks interactively

    -e, --edit            edit current diff and apply

    -f, --force           allow adding otherwise ignored files

    -u, --update          update tracked files

    -N, --intent-to-add   record only the fact that the path will be added later

    -A, --all             add changes from all tracked and untracked files

    --refresh             don't add, only refresh the index

    --ignore-errors       just skip files which cannot be added because of errors

    --ignore-missing      check if - even missing - files are ignored in dry run