Skip to main content

暂存切换stash

前置知识

有时候我们收到一个bug,但手头正在修改一个feature分支,且开发得火热,并不想在这时候进行commit

有如下几种处理方式:

  • 情况1:git add并且git commit,再git checkout ,提交到当前分支,但是这样就会造就多一个临时的commit

  • 情况2:git add但不git commit,然后使用git stash当前的工作状态进行暂存(git栈),然后git checkout到新分支,做修改。git checkout回到之前的分支之后git stash apply可以恢复之前的修改,再git commit,提交到之前的分支

  • 情况3:git add但不git commit,也不git stash,直接git checkout到新分支,做修改,然后再git commit的话,记录就在切换后的分支下面。

git stash

暂存当前工作状态

git add .
git stash
git checkout {切换其他分支进行其他工作}

恢复

# 查看当前已暂存的工作区
git stash list

# 恢复对应的工作区,且同时删除在git栈中的数据,如果是临时数据恢复,可以采用pop
git stash pop

# or
# 以下方法恢复后,不会将git栈的记录删除
git stash apply stash@{$num}

# 删除git栈中的记录,如果使用pop,会在恢复时同时删除
git stash drop stash@{$num}

其他指令

# 清除所有git栈中的记录
git stash clear

# 对比本地
git stash show

操作案例

git add .
git stash
git checkout master
git checkout dev
git stash pop