分支管理~Bug分支,feature分支。git stash; 强删git branch -D <name> (十二)
Bug 分支软件开发中,bug无处不在。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。当你接到一个代号101的bug的任务需要修复时,很自然地,你想创建一个分支 i...
Bug 分支
软件开发中,bug无处不在。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
当你接到一个代号101的bug的任务需要修复时,很自然地,你想创建一个分支 issue-101 来修复它,但是,等等,当前正在分支 dev 上进行的工作还没有提交,如下:
并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?
幸好,Git 还提供了一个 stash 功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作,如下:git stash 命令
现在,用 git status 查看工作区,就是干净的(除非有没有被Git管理的文件),因此可以放心地创建分支来修复bug。
首先确定要在哪个分支上修复bug,假定需要在 master 分支上修复Bug,就从 master 创建临时分支,如下:
现在修复bug,手动把文件 readme.txt 里的内容 “ one two three ” 删除,如下:
然后添加、提交:
修复完成后,切换到 master 分支,并完成合并,最后删除 issue-101 分支,如下:
太棒了,原计划两个小时的bug修复只花了5分钟!现在,是时候接着回到dev分支干活了!
工作区是干净的,刚才的工作现场存到哪去了?用 git stash list 命令看看,如下:
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用 git stash apply 恢复,但是恢复后,stash内容并不删除,你需要用 git stash drop 来删除;
二是用 git stash pop ,恢复的同时把stash内容(贮藏现场记录)也删了,如下:
再用 git stash list 查看,就看不到任何 stash 内容 了,如下:(没有任何贮藏工作现场的记录了)
你可以多次stash,恢复的时候,先用 git stash list 查看,然后恢复指定的stash,用命令,如下:
$ git stash apply stash@{0}
小结:
1、修复bug时,我们会通过创建新的分支进行修复bug,然后合并新分支,最后删除新的分支;
2、当手头工作没有完成时,先把工作现场贮藏一下通过命令 git stash ,然后去修复bug,修复后,再 git stash pop,回到工作现场。
feature 分支
软件开发中,总有无穷无尽的新的功能要不断添加进来。
添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。
现在,你终于接到了一个新任务:开发代号为Vulcan的新功能,该功能计划用于AR社交。于是准备开发,创建并切换到新的分支,如下:
5分钟后,开发完毕:
切回分支 dev,准备合并 git merge ,如下:
一切顺利的话,feature分支和bug分支是类似的,合并,然后删除。
但是!就在此时,接到上级命令,因经费不足,新功能必须取消!
虽然白干了,但是这个包含机密资料的分支还是必须就地销毁,如下:
error: The branch 'feature-vulcan' is not fully merged。表示:错误:分支“feature-vulcan”没有完全合并。
If you are sure you want to delete it, run 'git branch -D feature-vulcan'。表示: 如果您确定要删除它,请运行“git分支-D feature-vulcan”。
销毁失败。Git友情提醒,feature-vulcan分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用大写的-D参数。
现在我们强行删除,如下:
小结:
1、开发一个新的功能,最好新建一个分支feature,再作开发;
2、如果要丢弃一个没有被合并过的分支,可以通过命令 git branch -D <name> 强行删除。
转自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)