1、前言
git add命令主要用於把咱們要提交的文件的信息添加到索引庫中。當咱們使用git commit時,git將依據索引庫中的內容來進行文件的提交。
2、基本
git add <path>表示 add to index only files created or modified and not those deleted
我一般是經過git add <path>的形式把咱們<path>添加到索引庫中,<path>能夠是文件也能夠是目錄。
git不只能判斷出<path>中,修改(不包括已刪除)的文件,還能判斷出新添的文件,並把它們的信息添加到索引庫中。
3、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>表示.,即當前目錄。
4、git add -A
git add -A: [<path>]表示把<path>中全部tracked文件中被修改過或已刪除文件和全部untracted的文件信息添加到索引庫。
省略<path>表示.,即當前目錄。
5、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.一、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.二、update子命令
能夠經過update子命令(2: [u]pdate)把已經tracked的文件添加到索引庫中。其操做和revert子命令相似。
5.三、add untracked子命令
經過add untracked子命令(4: [a]dd untracked)能夠把還沒被git管理的文件添加到索引庫中。其操做和revert子命令相似。
5.四、diff子命令
能夠經過diff子命令(6: [d]iff)能夠比較索引庫中文件和原版本的差別。其操做和revert子命令相似。
5.五、status子命令
status子命令(1: [s]tatus)功能上和git add -i類似
5.六、quit子命令
quit子命令(7: [q]uit)用於退出git add -i命令系統
6、幫助
咱們能夠經過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
git