目录
问题描述
今天遇到一个git分支切换的问题,我在分支A上做了修改,然后切换到分支B后,发现工作区内容未发生改变。
原因
如果当前分支A所做的修改没有提交就切换去其他分支B的话,就会这样。
可以在分支A上用 git status 检查,可以看到分支A是否存在未提交的修改。
解决方法
第一种:如果在当前分支上的工作已经做完:用 git add 和 git commit 提交修改。提交后再切换到分支B即可。
第二种:如果我当前分支上的工作还没做完,不能提交,但又想去其他分支,这时候可以把当前分支的工作现场隐藏起来。用 git stash 暂存当前工作现场,这个时候再用 git status 查看工作区的话,就不会存在未提交的修改。实际上是将修改后的版本暂存起来了,然后就可以放心地去其他分支了。用 git stash list 可以查看隐藏起来的工作现场。
恢复工作现场的两种方法:
- 用 git stash apply 恢复。恢复后,stash list中并不删除恢复的stash,需要用 git stash drop 来删除。
- 用 git stash pop,恢复的同时把stash内容也清空了,这时候再用 git stash list 就看不到stash了。
修改内容时可以多次 stash ,恢复的时候,先用 git stash list查看,然后用 git stash apply stash@{0} 或者 git stash pop stash@{0} 来恢复指定的stash。
每stash一次就会生成一种暂存版本,有stash@{0},stash@{1}等。
end