git checkout .和git checkout -f的區別;git add . git add -u git add -A的區別


// 放棄所有的文件修改
git checkout .
此命令用來放棄掉所有還沒有加入到緩存區(就是 git add 命令)的修改:內容修改與整個文件刪除。但是此命令不會刪除掉剛新建的文件。因為剛新建的文件還沒已有加入到 git 的管理系統中。所以對於git是未知的。自己手動刪除就好了。

//丟棄本地修改,還可以刪除沒有跟蹤的
git checkout -f

git add

git add -A和 git add .   git add -u在功能上看似很相近,但還是存在一點差別

git add . :他會監控工作區的狀態樹,使用它會把工作時的所有變化提交到暫存區,包括文件內容修改(modified)以及新文件(new),但不包括被刪除的文件。

git add -u :他僅監控已經被add的文件(即tracked file),他會將被修改的文件提交到暫存區。add -u 不會提交新文件(untracked file)。(git add --update的縮寫)

git add -A :是上面兩個功能的合集(git add --all的縮寫)

下面是具體操作例子,方便更好的理解(Git version 1.x):

git init
echo Change me > change-me
echo Delete me > delete-me
git add change-me delete-me
git commit -m initial
 
echo OK >> change-me
rm delete-me
echo Add me > add-me
 
git status
# Changed but not updated:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me
 
git add .
git status
 
# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
# Changed but not updated:
#   deleted:    delete-me
 
git reset
 
git add -u
git status
 
# Changes to be committed:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me
 
git reset
 
git add -A
git status
 
# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
#   deleted:    delete-me

總結:

·  git add -A  提交所有變化

·  git add -u  提交被修改(modified)和被刪除(deleted)文件,不包括新文件(new)

·  git add .  提交新文件(new)和被修改(modified)文件,不包括被刪除(deleted)文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM