git stash是我们使用git中的常用操作, 比如正在分支a上修复bug, 改了一些文件, 但是此时分支b上有一个很紧急的bug, 需要切换到分支b上修复。于是git checkout 分支b, 咦不让切换, 说是需要先将修改的文件提交。但是因为分支a上的bug未修复完不想提交怎么办, 于是git stash就出场了
git stash基本用法
- 查看已经添加的储藏栈内容,git stash list
- 将已修改的内容添加到储藏区,git stash; 如果需要包含新添加的文件,可以加上-u参数, git stash -u
- git stash apply 0(0是stash中的第1条记录), 将储藏区的第一条恢复到工作区(会在stash保存记录); 如果恢复之后不需要在stash中保存的话, 可以使用git stash pop 0(0是stash中的第1条记录)
- git stash clear, 清空储藏区
git stash clear之后的恢复
如果我们使用git stash将已修改的一些文件储藏起来了, 然后使用git stash clear清除之后还可以恢复么?
答案是 可以
首先请出我们的主角:git fsck命令
步骤
- git fsck --lost-found, 找出刚才删除的提交对象和文件对象, 里面是一个一个的 dangling commit commitId
- git show commitId一个一个的查看修改的内容, 找到了我们需要恢复的commitId之后
- git stash apply commitId直接恢复就可以了