【场景一】
程序猿正在分支dev上开发新需求,而产品汪发现线上版本(master)有一个bug(代号1001)。程序猿收到这个代号为1001的bug的任务时,很自然地,想创建一个分支issue-1001来修复它。但是,等等,当前正在dev上进行的工作还没有提交。并非不想提交,而是工作只进行到一半,还没法提交。但是,必须在两个小时内修复该bug,怎么办?
修复指定版本bug的四个步骤:
1、储藏当前分支现场
Git 提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
2、切换到主分支、创建并切换到问题分支,修复bug,提交
3、切换到主分支,合并问题分支到主分支
当然,bug修复后,问题分支可以使用命令(git branch -d 分支名字)进行删除。
4、再次切换到之前的分支,恢复现场,继续干活
切换到dev分之后,用 git status 命令查看,工作区是干净的,刚才的工作现场存到哪去了?这时可以用git stash list 命令查看,工作现场还在,只是需要用命令恢复即可!两种方式:
一是用 git stash apply 恢复,但是恢复后,stash内容并不删除,你需要用 git stash drop 来删除;
另一种方式是用 git stash pop,恢复的同时把stash内容也删了:
再用 git stash list 查看,就看不到任何stash内容了
小结一下:
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场 git stash 一下,然后去修复bug,修复后,再用 git stash pop,回到工作现场。
【场景二】
程序猿正在dev分支上进行开发,这时候接到新需求(很可能是实验性的需求)。当然程序猿不希望把现有分支的代码打乱,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。
这时候,切回dev版本,准备合并feature007分支。而此时,产品汪又撤销的这个需求,开发完的内容必须销毁。
所以,程序猿必须删除feature007分支的所有内容,于是使用命令 git branch -d feature007 进行删除,销毁失败。
Git友情提醒:feature007 分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用大写的 -D 参数。
那么,使用 git branch -D feature007,强行删除feature007分支。
小结一下:
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过 git branch -D <name> 强行删除。
ps:以上内容,根据网上资料并结合自身实践整理。