Files
Knowledge/1 使用/git/git stash.md
T

59 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
**能,而且可以非常灵活地在多个分支上重复使用。**
Git 的 Stash(贮藏)功能可以把它想象成一个“**代码剪贴板**”,里面的内容和“创建”它的那个分支早已没有了绑定关系,可以随意粘贴到任何其他分支上。
### 🎯 核心:使用 `git stash apply`
要在别的分支提取,关键就是使用 `git stash apply` 命令,而不是 `pop`。
**`apply` vs `pop` 的区别**:
| 命令 | 恢复后 | 适用场景 |
| :--- | :--- | :--- |
| `git stash apply` | Stash 内容**保留**在堆栈中 | 需要将同一份修改应用到多个分支,对代码改动进行交叉测试 |
| `git stash pop` | 恢复后,对应的 Stash 会**被删除** | 适合只想把代码“移动”到另一个分支,不需要再保留这份修改的场景 |
### 🧭 操作指南:一份 Stash 在多分支间复用
1. **保存当前工作**:
```bash
# 建议添加描述,方便日后识别
git stash push -m "进行中但没有完成的功能X"
```
2. **应用到目标分支**:
```bash
# 切换到你要应用修改的分支
git checkout 目标分支名
# 将 Stash 中的修改应用过来
git stash apply
# 如果本地有多个 Stash,用以下命令查看列表,
# 再用 git stash apply stash@{n} 应用特定的一个
git stash list
```
**执行后**:代码改动会出现在当前分支的工作区,`git stash list` 里原来的记录还在,意味着你可以去下一个分支继续执行 `git stash apply`。
3. **(可选)应用完成后清理**:当所有需要的分支都应用完毕,不再需要这份 Stash 时,可以手动清理掉:
```bash
git stash drop stash@{0}
```
### ⚠️ 可能遇到的问题及解决方案
**问题:应用时产生合并冲突**
当目标分支的代码与你存储的内容差异较大,导致 Git 不知道如何自动合并时,就会出现冲突。
**解决方案**:冲突的产生是正常现象,手动处理即可。
1. **找到冲突**:Git 会告诉你哪些文件冲突并暂停应用。
2. **手动解决**:打开冲突文件,编辑代码,保留你需要的部分(通常删除 `<<<<<<<`,`=======`,`>>>>>>>` 这些标记)。
3. **告知 Git**:解决后保存文件,并执行 `git add <冲突文件名>`。
4. **完成应用**:无需额外提交,`add` 命令后,Stash 的应用即告完成。
### 🚀 其他常用管理命令
* **查看所有 Stash**:`git stash list`。
* **从 Stash 直接创建新分支**:`git stash branch <新分支名> stash@{0}`。这会将你的 Stash 恢复到一个新的独立分支,在复杂改动时特别好用。
* **存储未跟踪的文件**:`git stash -u`。
* **清理所有 Stash**:`git stash clear`。