愿所有美好如期而遇
我们现在正在dev4分支上进行开发,但是在我们开发过程中,并且我们还未提交,master分支上出现了bug,需要我们修复,我们先来看情景
我们添加一行代码并且不提交充作开发,模拟正在进行开发时master分支出现bug时的情景。
此时我们切换回master分支,此时dev4分支里做的修改我们在master分支上也能看见(因为我们未提交到dev4分支上)
此时我们也并未开发完成,不想做提交,但是又想新建一个分支去修改bug,同时在这个分支上看不见我们未完成开发的代码,就需要 git stash命令将我们工作区内容进行储藏,将来在某个时间段进行恢复。
同时,git stash只能追踪管理我们添加提交过的文件,未被git管理的文件,无法储藏他的内容。
同时我们储藏的内容会出现在本地仓库内,tree .git即可查看
现在,我们新建分支去修复bug。
我们假设少写了一行代码而引起了bug,所以我们修复它
此时,我们已经完成了bug的修复工作
接下来就是我们的数据恢复工作
使用指令git stash pop,恢复dev4分支储藏的代码。
当我们恢复后,发现修复后的内容并没有在我们的dev4分支上显示出来
此时的状态图是这样的
我们现在可以继续开发,假设我们一段时间后开发完成了
我们最终的目的是将dev4上的代码合并到master上,以此完成新功能,但是修改过bug后,我们现在的代码和master的代码是不一样的,合并时会发生冲突,而这个冲突时需要我们手动去解决的,在master上删除那些冲突代码是有风险的,所以我们需要在dev4上进行合并master解决冲突后再切换回master分支上合并dev4。
状态图如下:
我们vim Readme后,fix bug和I am coding... Done,这两句代码会发生冲突,我们只需要将I am...这句代码放在最后,这样就解决了代码的冲突,因为我们开发的代码前面没有了和master不一样的代码,我们也就能成功合并。
最终我们完成了合并。
最后,我们删掉已经没用的分支。