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.txtfile2.txtfile3.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.txtfile2.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 resetgit revert 可以从 stash 中恢复(git stash popgit stash apply

总结

  • 如果你希望将当前的改动暂存起来,以便后续提交,使用 git add .
  • 如果你希望临时保存当前的改动,并清理工作目录以便执行其他操作(如切换分支、拉取更新等),使用 git stash

全部评论

·