一、问题:
一般来说,开发一个需求就重新拉一个git的分支,也叫开发分支,这样有利于代码的管理与维护。这时候就涉及到分支的切换和提交,在某些场景下就会有些问题:
- 场景1:当你在一个开发分支写代码时,突然线上有一个bug需要紧急修复,需要切回master分支修改
- 场景2:当你两个需求同时开发,一个需求开发到一半时,因为某些原因暂停,不得不先进行另一个需求的开发
- 场景3:当你开发一个需求开发到一半的时候发现,弄错分支了,需要把当前分支回到change之前的状态,同时在新分支上恢复之前开发的内容
这些场景有时候功能还未开发完,或者不想提交代码到本地或者远程,因为git有一些颜色标识,方便观察文件的变化,这时候,要么就直接commit提交,去新分支修改,再回来撤销commit;要么使用的暂存代码功能:Stash / Shelve。
二、解决:
git stash 暂存代码是本地的,不会上传到服务器上,就相对于先“剪贴”,将这部分内容放在“剪贴板”,然后在用的时候再“粘贴”出来。
操作步骤:
1.暂存
第一种:Git – Uncommitted Changes – Stash Changes
stash窗口中,对当前的分支暂存的代码进行添加备注的标签信息
这样代码就回到未修改过的状态了。
第二种:Git – Uncommitted Changes – Shelve Changes
这两种方式都差不多(我更倾向于 Shelve ),实现效果也一样,具体区别:
- shelve 是idea自带的功能,比较灵活,方便简单,可以自由选择需要暂存的修改
- stash 是git的功能,只能将所有修改一起暂存,然后一起恢复
2.查看
Git – Uncommitted Changes – Show Shelf
这里就可以看到项目的3条暂存
也可以从这里查看:
3.恢复
当切回其他分支再切回来时,对代码进行恢复。
第一种:Git – Uncommitted Changes – UnStash Changes
这里会有你所有的暂存信息,你在不同分支上的stash都会显示出来,选择要恢复的暂存信息,适用于场景3。勾选 pop stash 恢复之后删除这条暂存。
这里drop才是删除一条stash,Clear是删除所有,切勿操作!!!
第二种:麻烦的话可以从这里一键恢复全部
填写恢复信息、勾选成功后是否删除该条等。
END