三分钟学会用 Git stash 暂存手头工作再切换分支
正在写代码,突然要切到另一个分支修一个紧急问题,手头改了一半的代码怎么办?先提交吧,改到一半没法提交;直接切换吧,Git 会报错。Git stash 就是为这个场景准备的:把未提交的改动先暂存起来,工作区恢复干净,等处理完再取回来。
一、基本用法:三条命令
第一步,把当前改动暂存起来:
git stash
第二步,确认工作区已经干净,可以放心切换分支:
git status
git checkout hotfix-branch
第三步,紧急问题处理完,切回原来的分支,把暂存的改动取回来:
git checkout feature-branch
git stash pop
git stash pop 会把最近一次暂存的改动恢复到工作区,同时删除这条暂存记录。
二、给暂存起个名字
只用 git stash 时,暂存记录默认没有名字,攒多了容易分不清。养成加说明的习惯:
git stash push -m "重构登录表单,做到一半"
查看暂存列表:
git stash list
列表里会看到类似 stash@{0}: On feature-branch: 重构登录表单,做到一半 的记录。
三、只取回某一条暂存
暂存了多条时,不用按顺序取,可以指定编号:
git stash pop stash@{1}
如果只想看一眼某条暂存里改了什么,还没决定要不要取回,先看差异:
git stash show -p stash@{0}
确认无误再取回。取回后如果代码冲突,Git 会像处理合并冲突一样标出冲突位置,逐个解决后再提交。
四、两个容易踩的坑
第一,git stash 默认只暂存已跟踪文件的改动,新建的、还没有 git add 过的文件不会被暂存。新建文件也想一起暂存,加 -u 参数:
git stash -u
第二,git stash pop 恢复后如果产生冲突,暂存记录不会自动删除。解决冲突并确认代码没问题后,再手动清理:
git stash drop
不想保留任何暂存时,可以清空全部记录,但这一步不可恢复,执行前先用 git stash list 确认。
五、什么时候不用 stash
如果手头的改动已经成型,只是还没写完测试,提交一个临时提交再切换分支也可以,回来之后用 git commit --amend 继续完善。stash 更适合“改动还没到能提交的程度、只是临时让路”的场景。
小结:改一半要切分支,先 git stash 暂存,切回来再 git stash pop 取回;多条暂存就加 -m 起名字,用 git stash list 查看。把这个习惯养成,分支切换就再也不会被未提交的改动卡住了。
- 点赞
- 收藏
- 关注作者
评论(0)