在项目的正常开发过程中,之前发布过的版本可能很会出bug,这时就需要停下来现在的开发任务,先去修改bug,完成后再回来继续开发任务。
git中stash提供了保存现场的功能,可以把当前工作区、暂存区中的内容不需要提交而保存下来,转而去做bug修复,完成后再恢复现场,继续开发工作。
示例如下:停止当前工作,修复master分支下的一个bug,为修改dailyfresh/settings.py文件
语言和时区的原内容为
LANGUAGE_CODE ='en-us'
TIME_ZONE ='UTC'
将语言和时区改为
LANGUAGE_CODE ='zh-Hans'
TIME_ZONE ='Shanghai/Asia'
1.查看当前状态
git status
![](https://i-blog.csdnimg.cn/blog_migrate/f9e6d6370778790e42a95afc6f638013.png)
2.保存现场
git stash
![](https://i-blog.csdnimg.cn/blog_migrate/094a427521c1ac4b26cb731bcba7a776.png)
再查看当前状态,发现是干净的
git status
![](https://i-blog.csdnimg.cn/blog_migrate/d8bf447c449c8ce6057725d3c2d47ce1.png)
3.切换到master分支
git checkout master
4.新建临时分支用于修复bug,用完后会删除此分支
git checkout -b bug001
5.按照上面的设计,修改dailyfresh/settings.py文件的语言和时区如下
LANGUAGE_CODE ='zh-Hans'
TIME_ZONE ='Shanghai/Asia'
添加:将工作区中的更改添加到暂存区
注意:当前目录为manage.py文件所在目录
(py_django) python@ubuntu:~/Desktop/pytest/django1/dailyfresh$ git add dailyfresh/settings.py
提交:将暂存区的内容提交到仓库区
git commit -m '修复时区语言'
6.切换回master分支
git checkout master
7.将bug001分支合并到master分支
因为临时分支用完后会被删除,无法通过分支查询历史记录,所以使用临时分支时需要使用no-ff的方式,同时写上-m备注信息。
git merge --no-ff -m "修复bug-语言时区" bug001
![](https://i-blog.csdnimg.cn/blog_migrate/e43b9e511880394b307e867754cd6e13.png)
推送到服务器
git push
8.删除临时分支bug001
git branch -d bug001
![](https://i-blog.csdnimg.cn/blog_migrate/d6a9109b6e78687696fdf7d3b85f50c9.png)
9.切换回工作分支zhujiao
git checkout zhujiao
查看现场列表
git stash list
![](https://i-blog.csdnimg.cn/blog_migrate/3160274a50c4b1aba3b487cfca679158.png)
恢复现场
git stash pop
![](https://i-blog.csdnimg.cn/blog_migrate/cc7b0bba7ba2ec90f815ddd6e9bf6427.png)
恢复现场后查看工作状态
git status
![](https://i-blog.csdnimg.cn/blog_migrate/cbb300603b5fa017621701ae137473d2.png)
接下来可以在这个分支继续开发。