- 使用场景
某些时候,你正在你的开发分支上行云流水的各种操作时,
你的leader告诉你,有一个线上bug需要紧急修复,
你通常的办法就是:
$ git add .
$ git commit -m 'XXXXX'
$ git checkout master
$ git checkout -b 'bugfix_branch'
$ 做一些代码改动 巴拉巴拉
$ git add .
$ git commit -m 'bugfix XXXXX'
$ git push origin bugfix_branch
$ git checkout working_branch
$ 继续行云流水
- 弊端
迫使你在当前开发分支上强行提交一次commit,
然后去建立fix分支去修复bug,
可能这次commit会有很多调试信息并不需要去提交,
但是你为了抓紧时间,不得不将它们全部提交,
下次再去逐个删掉调试信息,很麻烦
- 解决
可以使用 git stash 来保存工作进度,
然后使用 git stash pop 来恢复工作进度
那么流程可能就变成了这样:
$ git stash
$ git checkout master
$ git checkout -b 'bugfix_branch'
$ 做一些代码改动 巴拉巴拉
$ git add .
$ git commit -m 'bugfix XXXXX'
$ git push origin bugfix_branch
$ git checkout working_branch
$ git stash pop
$ 之前修改的内容还都是 modified 状态,继续行云流水
git stash 扩展:
git stash #将本地修改代码暂存
git stash save 'message' #暂存代码并添加备注
git stash pop #把最近的暂存代码还原
git stash pop stash@{0} #还原指定 id 的暂存代码
git stash list #查看暂存代码列表
git stash drop #删除最近的暂存代码
git stash drop stash@{0} #删除指定 id 的暂存代码
git stash clear #清空所有暂存代码
更多信息请移驾: