git add .和git stash
52 2025-04-17 10:14
git add .
和 git stash
是 Git 中两个非常不同的命令,它们在处理本地改动时有不同的用途和行为。以下是对这两个命令的详细解释和它们的区别:1. git add .
git add .
是一个命令,用于将当前工作目录中的所有改动(包括新文件、修改的文件和删除的文件)添加到暂存区(staging area)。暂存区是 Git 中一个临时存储区域,用于存放即将提交的内容。作用
-
将改动添加到暂存区:
git add .
会将当前目录及其子目录中的所有改动暂存起来,以便后续提交。 -
准备提交:暂存区的内容可以通过
git commit
提交到本地仓库。
示例
假设你修改了以下文件:
-
修改了
file1.txt
-
新增了
file2.txt
-
删除了
file3.txt
运行以下命令:
bash
复制
git add .
这将把
file1.txt
、file2.txt
和 file3.txt
的改动添加到暂存区。你可以通过 git status
查看暂存区的内容:bash
复制
git status
输出可能如下:
复制
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: file1.txt
new file: file2.txt
deleted: file3.txt
注意事项
-
git add .
会添加当前目录及其子目录中的所有改动,但不会添加.gitignore
中忽略的文件。 -
如果你只想添加特定文件,可以使用
git add <file>
指定文件。
2. git stash
git stash
是一个命令,用于将当前工作目录中的所有未提交的改动(包括暂存区的改动和未暂存的改动)保存到一个临时存储区域,称为“stash”。这些改动可以从 stash 中恢复,也可以在需要时丢弃。作用
-
保存未提交的改动:
git stash
会将当前工作目录中的所有未提交的改动保存到 stash 中,并将工作目录恢复到最近一次提交的状态。 -
清理工作目录:这使得工作目录变得干净,方便执行其他操作(如切换分支、拉取更新等)。
-
恢复改动:可以从 stash 中恢复保存的改动。
示例
假设你修改了以下文件:
-
修改了
file1.txt
-
新增了
file2.txt
运行以下命令:
bash
复制
git stash
这将把
file1.txt
和 file2.txt
的改动保存到 stash 中,并将工作目录恢复到最近一次提交的状态。你可以通过 git status
查看工作目录的状态:bash
复制
git status
输出可能如下:
复制
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
恢复 stash 中的改动
-
恢复并删除 stash:bash
-
复制
git stash pop
这会将最近一次保存的 stash 中的改动恢复到工作目录,并从 stash 中删除。 -
恢复但保留 stash:bash
-
复制
git stash apply
这会将最近一次保存的 stash 中的改动恢复到工作目录,但不会从 stash 中删除。 -
查看 stash 列表:bash
-
复制
git stash list
这会列出所有保存的 stash。 -
丢弃 stash:bash
-
复制
git stash drop
这会删除最近一次保存的 stash。
git add .
和 git stash
的区别
表格
复制
特性 | git add . |
git stash |
---|---|---|
作用 | 将当前目录及其子目录中的所有改动添加到暂存区 | 将当前工作目录中的所有未提交的改动保存到 stash,并清理工作目录 |
暂存区 | 将改动添加到暂存区 | 不涉及暂存区,直接保存当前工作目录的状态 |
工作目录 | 不改变工作目录的状态 | 将工作目录恢复到最近一次提交的状态 |
用途 | 准备提交改动 | 临时保存改动,清理工作目录以便执行其他操作 |
是否可恢复 | 提交后可以回退(git reset 或 git revert ) |
可以从 stash 中恢复(git stash pop 或 git stash apply ) |
总结
-
如果你希望将当前的改动暂存起来,以便后续提交,使用
git add .
。 -
如果你希望临时保存当前的改动,并清理工作目录以便执行其他操作(如切换分支、拉取更新等),使用
git stash
。
全部评论