Git基本操作(3)- git add详细举例

本文详细介绍了如何使用 Git 将工作区的文件和目录提交到暂存区。通过 `git add` 命令,可以指定文件、文件夹或整个目录进行提交。内容包括 `git add file1 file2` 添加单个文件,`git add dir` 添加非空文件夹,`git add .` 添加当前目录所有文件,以及 `git add --all` 提交所有本地修改。此外,还探讨了 `git add .` 和 `git add --all` 的区别。对于开发者来说,掌握这些基本操作是日常版本控制的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 git  add:将工作区的内容提交的暂存区

1、git add [file1] [file2] ...     指定文件到暂存区

例如 新建两个文件和两个文件夹

 然后

 git add 1.txt 2.txt

我们查看一下状态,两个文件被加到了暂存区

 2、 git add [dir]... 指定文件夹到暂存区

我在folder1中新建一个空文件夹和一个文件

然后我来执行 

 git add folder1

从这个来看,git只提交不为空的文件夹,如果是空文件夹,git不提交到暂存区 

3、git add . 添加当前目录的所有文件到暂存区

git add .

git 根目录下的所有文件都提交了

那我要是就想单独提交folder2下的文件呢

D:\git (master)
λ cd folder2


D:\git\folder2 (master)
λ git add .


D:\git\folder2 (master)
λ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   ../1.txt
        new file:   ../2.txt
        new file:   ../folder1/folder1.txt
        new file:   folder2-1.txt
        new file:   folder2-2.txt
        new file:   folder2-3.txt

 先进到folder2文件夹,再git add .

4、git add .和 git add --all 的区别

git add .   是当前路径下的所有更改

git add  --all   不管你在本地工作区的哪个路径下,执行这个都是把本地工作区的所有修改都提交

<think>好的,我现在需要回答用户关于`git add .`和`git add -A`区别的问题。首先,我得回忆一下这两个命令的具体行为,确保自己理解正确。 根据之前的引用内容,引用[1]提到`git add -A`类似于添加所有内容,包括顶层仓库文件夹下的所有文件。引用[3]指出`git add -u`只处理被修改或删除的已跟踪文件,而`git add -A`则包括未跟踪的文件。引用[4]提到`git add .`不会记录删除操作,而`git add -A`会。不过这里可能存在混淆,需要进一步验证。 接下来,我需要确认这两个命令在不同Git版本中的行为是否一致。比如,在Git 2.0之后,`git add .`在子目录中运行时是否仅添加当前目录下的文件,而`git add -A`无论在哪里执行都会添加整个仓库的变更。此外,是否涉及文件删除和重命名的处理差异。 然后,整理出主要区别点:作用范围(当前目录 vs 整个仓库)、处理文件类型(新文件、修改、删除)、不同Git版本的影响。同时,使用场景方面,用户可能在特定子目录添加文件时使用`git add .`,而需要全局添加时使用`git add -A`。 最后,需要确保回答结构清晰,分点说明区别,并举例说明使用场景,同时引用正确的资料来源。可能还需要注意用户提到的Git版本差异,比如引用[1]中提到的Git 2.7对特殊文件夹名称的支持,但这里可能不相关,可以暂时忽略。关键点在于明确两个命令的行为差异,帮助用户正确使用。</think>### Git add . 与 Git add -A 的区别及使用场景 #### 一、核心区别总结 1. **作用范围** - `git add .` 仅添加**当前目录及其子目录**下的新文件(untracked)、修改文件(modified)和删除操作(deleted)。 注意:在子目录执行时,不会影响父目录或其他路径的变更。 ```bash # 假设在子目录 /src 下执行: git add . # 仅添加/src下的变更 ``` - `git add -A`(或 `git add --all`) 添加**整个Git仓库**内所有路径的新文件、修改文件和删除操作,无论命令在哪个子目录执行[^3][^4]。 ```bash # 在任何位置执行: git add -A # 添加仓库所有变更 ``` 2. **处理文件类型** - `git add .` 在Git 2.0及以上版本中,默认会添加新文件、修改文件和当前目录下的删除操作[^4]。 - `git add -A` 强制添加全仓库范围内的所有变更,包括: ✅ 新文件(untracked) ✅ 修改文件(modified) ✅ 删除操作(deleted) ✅ 重命名文件(renamed) 3. **版本差异** 在Git 2.0之前,`git add .` 不会记录删除操作,但新版本已修复此问题[^4]。 --- #### 二、使用场景对比 | 场景 | `git add .` | `git add -A` | |-------------------------|--------------------------------|----------------------------------| | 仅处理当前目录的变更 | ✅ 推荐(如专注开发某个模块时) | ❌ 不适用 | | 需要全局提交所有变更 | ❌ 漏掉其他目录变更风险 | ✅ 强制全仓库同步(如重构后批量提交) | | 明确处理文件删除操作 | ✅(Git ≥2.0) | ✅ | --- #### 三、操作验证示例 1. **新建并删除文件** ```bash touch new_file.txt # 创建新文件 rm old_file.txt # 删除旧文件 ``` - `git add .` → 提交当前目录的新建/删除 - `git add -A` → 提交全仓库的新建/删除 2. **跨目录操作** 假设仓库结构: ``` /project ├── /src └── /docs ``` - 在 `/src` 下执行 `git add .` → 仅处理 `/src` 的变更 - 在 `/src` 下执行 `git add -A` → 处理 `/src` 和 `/docs` 的变更 --- #### 四、经典问题解答 **Q1:为什么有时`git add .`后删除的文件没提交?** → 可能使用旧版Git(<2.0),需升级或改用`git add -A`[^4]。 **Q2:如何一次性提交所有变更?** → 使用`git add -A`或`git add --all`,比`git add *`更安全(后者可能漏掉点号开头的隐藏文件)。 --- #### 五、扩展知识 - `git add -u`:仅提交已跟踪文件的修改/删除,**不包含新文件**[^3] - `git add <path>`:精准添加特定文件/目录 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值