背景:一位同事因为误操作,将.git文件删除了部分东西,导致git 远端拉取步骤繁琐,且拉取完,远端分支不可见。重新clone 仓库正常,但是之前git本地仓库贮藏大量未提交代码无法迁出,于是本人开启一段git stash 迁移探寻之路。闲话不表,直接给出解决方案:
参考文档 https://stackoverflow.com/questions/3973034/export-a-stash-to-another-computer
思路
1、进入项目目录及.git所在目录
2、查看当前git 贮藏 git stash list
3、选出需要导出的贮藏 git stash show "stash@{0}" -p > changes.patch
其中 stash@{0} 是需要迁移出来的贮藏记录,0是该记录在git 贮藏栈中的下标
4、将changes.patch copy到另一个 新clone的项目目录下
5、切换至贮藏记录所在的分支
6、执行git apply changes.patch
注意,如果贮藏的信息已经在项目中提交过,则此次应用会失败,报错
7、如果应用贮藏发生冲突,可以用 git apply --3way changes.patch 强制变更,检查错误后再进行提交
如果存在没有跟踪的贮藏,可以通过git stash show "stash@{0}" -u -p > changes.patch 提取贮藏信息
use git apply --3way changes.patch to try to solve conflicts later, if you have got "patch does not apply".