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

2.8 KiB
Raw Blame History

能,而且可以非常灵活地在多个分支上重复使用。

Git 的 Stash(贮藏)功能可以把它想象成一个“代码剪贴板”,里面的内容和“创建”它的那个分支早已没有了绑定关系,可以随意粘贴到任何其他分支上。

🎯 核心:使用 git stash apply

要在别的分支提取,关键就是使用 git stash apply 命令,而不是 pop。

apply vs pop 的区别:

命令 恢复后 适用场景
git stash apply Stash 内容保留在堆栈中 需要将同一份修改应用到多个分支,对代码改动进行交叉测试
git stash pop 恢复后,对应的 Stash 会被删除 适合只想把代码“移动”到另一个分支,不需要再保留这份修改的场景

🧭 操作指南:一份 Stash 在多分支间复用

  1. 保存当前工作:

    # 建议添加描述,方便日后识别
    git stash push -m "进行中但没有完成的功能X"
    
  2. 应用到目标分支:

    # 切换到你要应用修改的分支
    git checkout 目标分支名
    
    # 将 Stash 中的修改应用过来
    git stash apply
    
    # 如果本地有多个 Stash,用以下命令查看列表,
    # 再用 git stash apply stash@{n} 应用特定的一个
    git stash list
    

    执行后:代码改动会出现在当前分支的工作区,git stash list 里原来的记录还在,意味着你可以去下一个分支继续执行 git stash apply。

  3. (可选)应用完成后清理:当所有需要的分支都应用完毕,不再需要这份 Stash 时,可以手动清理掉:

    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。