前瞻
当使用一个分支(如:feature/new-design)进行正常开发时,但是源代码出现一个紧急bug需要及时处理,但是此分支还没完成,又需要使用master分支进行bug处理,所以我们需要用到了git stash
命令
git stash #保存当前进度
git stash save "message" #保存当前修改状态,加上注释信息
git stash list #列出所有的曾经的stash
git stash pop #恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。会删除当前进度!!!
git stash pop --index #恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)
git stash pop stash@{1} #恢复指定的进度到工作区。stash_id是通过git stash list命令得到的
git stash apply <stash_id> #恢复指定的进度到工作区。和git stash pop一样只是不删除恢复的进度
git stash clear #删除所有存储的进度
本例使用laravel项目为例
- 模拟环境
在laravel项目文件中打开一个终端(我目前用的是windows,要是linux,cd进入该项目文件夹),切换一个分支feature/new-design,运行php artisan make:controller ReportsController
生成一个Reports控制器,然后在route.php文件中添加一个路由(随便写如:Route::resource('reports', 'ReportsController');
),此时我发现项目有个错误需要更改 - 先
git stash
将feature/new-design分支编写的内容拿出来,然后git checkout master
切换到master分支,此时git status
将会没有内容提交。 - 在master分支更改好bug,然后提交之后,切换到feature/new-design分支
-
git stash list
查看stash记录,运行git stash apply
(可以是git stash apply [stash id(stash@{0})]
)回到某个原点,此时再次git status
看到的就是之前git stash
前的内容 -
在此分支编辑完之后提交合并即可完成,达到目的,下面是我的简单流程