Git stash之后代码去哪了?怎么恢复?

UP主~楠楠 阅读 51

我刚才在开发一个新功能,突然要切回主分支修个紧急bug,就用了 git stash 把当前改动存起来了。结果切回来再 git stash pop,发现之前写的函数没了!是不是操作错了?

我 stash 前改的是这个函数:

function calculateDiscount(price, rate) {
  return price * (1 - rate / 100);
}

现在执行 git stash list 能看到记录,但 pop 之后文件还是旧的,这到底咋回事?

我来解答 赞 6 收藏
二维码
手机扫码查看
1 条解答
东方慧慧
兄弟别慌,stash没丢。你的代码肯定还在stash里藏着呢。

先执行这个命令看看stash里到底存了什么:

git stash show -p stash@{0}


如果上面这个命令看不到你的函数,说明stash的时候可能没把改动add进去。git stash默认只stash已跟踪文件的修改和暂存区的内容,你得先git add再stash。

不过看你的情况,更可能是pop的时候出问题了。你检查一下执行pop之后有没有冲突提示?有时候有冲突的话,git不会自动帮你合并。

不管怎样,先用这个命令确认stash内容:

git stash list


如果stash@{0}还在,那就用apply重新应用一次:

git stash apply stash@{0}


apply和pop的区别在于apply不会从stash列表里删掉,这样你操作起来更安全。

如果 stash show 确实能看到你的函数但apply之后文件还是旧的,那可能是你当前分支本来就有这个函数,只是你之前改动的部分被覆盖了。这种情况下你得手动把函数从stash里复制出来。

stash记录一直会在,直到你用git stash drop stash@{0}删掉它,所以不用担心代码丢失。
点赞
2026-03-18 13:06