git add .,git add -A,git add -u,git add * 的区别与联系

提示:前端查漏补缺,仅代表个人观点


提示:可以通过git version查看当前git版本信息

一、对于 Git Version 2.x

  • 在 Git –version 2.x 中对 git add . 的功能做了改动,git add . 会提交当前工作区中当前目录(包括子目录)下所有的文件改动,不像在 Git –version 1.x 时那样不包括被删除的文件。

Git Version 2.x 中如果想在使用 git add . 时不提交被删除的文件,可以使用 git add --ignore-removal 加上匹配符 .,即 git add --ignore-removal .

  • git add --ignore-removal 后的匹配符是可以更换的(但不能缺省),例如 git add --ignore-removal -A 可以实现在 git add -A 时不提交被删除的文件。

有些文章说在 Git –version 2.x 中 git add . git add -A 的功能变得完全相同,这是不对的。因为我们之前提到过,git add . 提交的文件改动受当前所在目录限制,它只会提交当前工作区中当前目录(包括子目录)下的文件改动,而 git add -A 不受当前所在目录的限制,提交的是当前整个工作区中所有的文件改动

  • git add *
    git add * 表示添加当前目录(包括子目录)下的所有文件改动,但不包括文件名以 . 符号开头的文件的改动。这是 Shell 命令,git 只是接收文件列表。而 git add . 的功能与 git add * 基本相同,只是 git add . 会将文件名以 . 符号开头的文件的改动也提交至暂存区。

二、总结详见下图:

在这里插入图片描述

三、对于 Git Version 1.x:

  • git add .:会将当前工作区中当前目录(包括子目录)下的所有新文件和对已有文件的改动提交至暂存区,但不包括被删除的文件。
  • git add -u:git add --update 的简写形式,它只会监控当前整个工作区中之前已被 add 的文件,即已被跟踪(tracked)的文件,也就是只会将当前整个工作区中被修改和被删除的文件提交至暂存区。而新文件因为未被跟踪(untracked),所以不会被提交至暂存区。
  • git add -A:git add --all 的简写形式,它会将当前整个工作区中所有的文件改动提交至暂存区,包括新增、修改和被删除的文件,不受当前所在目录限制。

总结详见下图:

在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭式程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值