Git stash
时间: 2025-06-10 19:45:07 浏览: 8
### Git Stash 的用法与示例
Git stash 是一种用于临时保存当前工作目录和索引状态的工具,允许用户在切换分支或处理紧急任务时保留未提交的更改。以下是对 Git stash 的详细说明及使用示例:
#### 1. 基本命令
- **保存当前更改**
使用 `git stash` 或 `git stash save "message"` 将当前的工作目录和索引状态保存到 stash 列表中,并清除工作区的更改[^2]。
- **查看 stash 列表**
使用 `git stash list` 查看所有已保存的 stash 记录。每个记录都有一个唯一的标识符(如 `stash@{0}`)[^4]。
- **应用最近一次 stash**
使用 `git stash apply` 将最近一次 stash 的更改重新应用到工作区,但不会从 stash 列表中移除该 stash[^2]。
- **弹出最近一次 stash**
使用 `git stash pop` 将最近一次 stash 的更改重新应用到工作区,并从 stash 列表中移除该 stash[^2]。
- **删除所有 stash**
使用 `git stash clear` 删除所有的 stash 记录[^1]。
#### 2. 解决冲突场景
当分支发生较大变更时,直接应用 stash 可能会导致冲突。此时可以使用以下方法:
- 使用 `git stash branch <branch-name>` 创建一个新分支,并将 stash 的更改应用到该分支上。
#### 3. 示例代码
以下是一个完整的使用示例:
```bash
# 开始开发
$ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file1.txt
# 保存当前更改到 stash
$ git stash
Saved working directory and index state WIP on main: abc1234 Initial commit
# 处理紧急任务
$ git checkout -b hotfix
Switched to a new branch 'hotfix'
# 提交紧急修复
$ git add .
$ git commit -m "Fix critical bug"
# 返回原分支并恢复 stash
$ git checkout main
Switched to branch 'main'
$ git stash pop
Reapplying saved working directory and index state WIP on main: abc1234 Initial commit
```
#### 4. 典型问题解决
- 如果尝试切换分支时遇到本地更改会被覆盖的错误,可以使用 `git stash` 暂存更改后再切换分支[^3]。
- 如果 stash 应用失败,可以尝试使用 `git stash branch` 创建新分支以避免冲突[^1]。
### 注意事项
- stash 不会保存未跟踪的文件。如果需要保存这些文件,可以在命令中添加 `--include-untracked` 参数[^4]。
- stash 的内容是全局的,适用于所有分支。因此,在多个分支间切换时需小心管理 stash 内容。
阅读全文
相关推荐

















