問題

命令git add [--all|-A]似乎與git add .相同.這是正確的嗎?如果沒有,它們有什麼不同?

  最佳答案

這個答案只適用於Git版本1.x.對於Git版本2.x,請參閱其他答案.


摘要:

  • git add -A分階段所有更改

  • git add .處理新檔案和修改,沒有刪除

  • git add -u分階段修改和刪除,沒有新檔案


詳情:

git add -A等於git add .; git add -u.

關於git add .的重要一點是它檢視工作樹並將所有這些路徑新增到分階段更改中,如果它們被更改或是新的且不被忽略,它不會階段任何“rm”操作.

git add -u檢視所有已經跟蹤的檔案,如果這些檔案不同或者已被刪除,則分階段更改這些檔案.它沒有新增任何新檔案,它只是分階段更改已經跟蹤的檔案.

git add -A是這兩種方法的方便捷徑。

您可以用這樣的東西測試差異(請注意,對於 Git 版本 2.x 您的 git add . git status 輸出將不同):

 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
 

  相同標籤的其他問題

gitgit-add