vault backup: 2026-11-07 16:33:44
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
**能,而且可以非常灵活地在多个分支上重复使用。**
|
||||
|
||||
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`。
|
||||
Reference in New Issue
Block a user