📜  如何恢复 git stash - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:09:08.580000             🧑  作者: Mango

如何恢复 git stash

当你需要临时切换到另一个分支去处理一些紧急问题,或者老板突然来了一封邮件需要你立即处理时,你肯定不会想把你已经修改的代码直接提交到版本库中。这时 git stash 命令就很有用了,它可以将你的工作区和暂存区的修改内容“储存”起来,以便你随时恢复回来。

但是,有时候你可能会不小心地清空了你所有的 stash,或者想要找回之前某个 stash 的内容,这时该怎么办呢?本文将分享几种方法帮助你找回之前 stash 的内容。

方法一:查看 stash 列表并恢复

首先,你需要使用 git stash list 命令查看你之前储存的 stash 列表。该命令会输出储存的标识、stash 的名字(如果有的话)以及储存时的提交信息。

$ git stash list
stash@{0}: WIP on master: 4bdbc6a add new feature
stash@{1}: WIP on develop: 53de303 fix bug
stash@{2}: WIP on feature-1: 5bea252 add new function

接着,使用 git stash apply 命令将之前的 stash 恢复回来。apply 命令可以将 stash 的修改内容应用到当前的工作区和暂存区中。如果你储存的时候有指定 stash 名字的话,还可以使用 git stash apply stash_name 的方式来找回指定的 stash。

$ git stash apply stash@{0}
方法二:查看 stash 中的修改内容

如果你只是想要查看某个 stash 中的修改内容,而不是将其恢复出来,可以使用 git stash show 命令。该命令会返回储存的修改内容的 diff,你可以通过添加 --patch(或 -p)参数来更详细地查看。

$ git stash show
# or
$ git stash show -p
方法三:手动查找 stash 内容

如果你的 stash 很多,而且你不记得储存它们的顺序了,那么可以使用 git fsck 命令来查找。

$ git fsck --unreachable | grep commit | cut -d ' ' -f3 | xargs git log --merges --no-walk --grep=WIP

该命令会列出 unreachable 的提交,并使用 grep 命令查找包含 “WIP” 的提交消息。你也可以将 WIP 替换成你自己的 stash 名字。找到之后,就可以使用 git show commit_id 来查看该 stash 的内容了。

结论

无论是不小心清空所有储存的 stash,还是需要找回之前的某个 stash,Git 都提供了方便的方法来帮助你找回代码,避免重复劳动。希望这篇文章能够帮助到你,让 Git 的使用更加得心应手。