git add -A 和 git add . 的区别

git add -Agit add .git add -u 在功能上看似很相近,但还是存在一点差别的;
git add .:它会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件;
git add -ugit add --update 的缩写,它仅监控已经被 add 的文件(即 tracked file),它会将被修改的文件提交到暂存区,不会提交新文件(untracked file)。
git add -Agit 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)文件;

Git 版本不同会有所区别:

Git Version 1.x:
Git Version 1.x

Git Version 2.x:
Git Version 2.x:

原文:http://www.cnblogs.com/skura23/p/5859243.html

发表评论
* 昵称
* Email
* 网址
* 评论