这里有需要一个概念叫 暂存更改(Stage Changes)。要区别于 搁置更改(Stash Changes)。暂存更改并不是说暂时搁置不提交的部分,相反,暂存更改是你想临时提交的内容。
暂存更改(Stage Changes): 将工作目录中的特定修改标记为”准备提交”的状态,是提交前的准备步骤(git add 的操作)
使用场景:选择性地提交部分文件的修改,或一个文件中的部分代码块(而不是整个文件)。
VS Code操作
- 在源代码管理视图中
- 点击文件旁的
+
号暂存整个文件 - 或点击
...
选择”暂存所选范围”来暂存特定代码块
命令行等效
git add 文件名 # 暂存整个文件
git add -p 文件名 # 交互式选择代码块暂存
搁置更改(Stash Changes):将工作目录中的所有未提交修改临时保存到栈中,清空工作目录,本质是是临时保存工作进度的操作(git stash
的操作)
使用场景
需要切换分支但不想提交当前半成品工作或临时修复紧急bug时需要干净的工作目录
VS Code操作:
- 在源代码管理视图中
- 点击
...
选择”存储更改”

命令行等效:
git stash # 存储所有未提交更改
git stash pop # 恢复最近存储的更改
暂存更改 (Stage) | 搁置更改 (Stash) | |
---|---|---|
目的 | 准备要提交的特定内容 | 临时保存所有未提交的工作 |
影响范围 | 可选择部分文件/代码块 | 总是影响所有未提交修改 |
Git命令 | git add | git stash |
后续操作 | 需要执行git commit | 需要执行git stash pop |
是否清空工作区 | 否 | 是 |
搁置工作流(临时保存)
git stash # 保存所有修改
git checkout hotfix # 切换到其他分支
# 处理紧急任务...
git checkout main # 切回原分支
git stash pop # 恢复之前的工作
还要注意的是,git stash 只保存跟踪的文件,对于新建的但是没有commit的他是不会临时保存的。。