git分支版本控制命令
本地分支管理
【step 1】小张让啊亮给他写的冒泡排序进行一下优化,当一趟排完了,发现没有进行任何数据交换,那么就直接结束排序,啊亮想着最好不要在master分支修改代码,还是重新创建一个本地分支吧,写完代码测试好,我再合并到master主干分支上,然后再推送到远程代码仓库中,最为稳妥,master主干
分支代码干干净净,省的我改来改去,把原来好的代码改错了。
git checkout -b sortdev01就是创建一个新的本地分支sortdev01并切换到该分支,从上面的命令可以看到已经切换到sortdev01分支了,git checkout -b相当于是这两个命令(git branch sortdev01是创建分支,git checkout sortdev01是切换分支)的合并。
【step 2】啊亮在sortdev01分支上进行的代码修改,测试正确以后,可以切换到master分支上,然后通过git merge命令把sortdev01分支上的代码改动合并到master主干分支上,然后推送到远程的代码仓库当中,如下:
如果啊亮做完该任务后,不想要sortdev01分支了,可以通过git branch -d sortdev01删除该分支,所以git在本地仓库中可以让我们创建很多分支,我们可以在分支上瞎折腾,把功能开发测试好了,然后在合并到其它分支当中,git建议多创建使用分支,使用起来非常灵活。
实际上,啊亮还可以直接在他的sortdev01分支上,把代码推送到远程origin仓库的master分支,命令如下:
合并分支冲突
上一小节把sortdev01分支合并到master分支上时一切顺利,是因为sortdev01分支在合并的时候,master分支没有做过任何改动,看图:
实际上有可能发生这样的情况:
1、啊亮从master分支创建了一个新的分支sortdev01,进行代码开发测试,提交
2、小张更新了master分支上的代码
3、 啊亮切换分支到master,git pull同步远程仓库master主干的最新代码,发现有变化
4、 啊亮直接git merge sortdev01就发生冲突了
通过git diff命令查看一下README.MD文件的冲突,在master主干上解决冲突,并提交远程仓库
然后再通过git add、git commit、git push把修改推送到远程origin仓库的master主干分支上,冲突就解决完了。
远程分支管理
我们在github上创建一个代码仓库,默认就拉了一个master主干分支,我们在master主干分支上开发了一期项目以后,再进行二期开发的时候,可以再拉一个dev分支出来,大家都在dev分支上开发,此时项目管理员可以把master分支的写权限关掉,因为一期功能开发验证完成,很稳定,此时可以拉取master代码,不能再push推送代码到master分支。
一般远程分支的创建都是由项目管理员来创建的,其它员工没有创建远程分支的权限,而且每一个远程分支的读写权限也都是由管理员来控制的。
【step 1】由王sir在github上创建一个dev分支,来继续开发新的功能
【step 2】小张在git bash上通过git pull更新仓库内容
【step 3】小张自己的git bash上创建了一个本地的localdev分支,注意在本地创建的分支,需要设置跟踪哪个远程分支(拉远程仓库的主干分支,默认就在本地创建了一个master分支,并追踪了远程的origin/master分支,但其它分支的追踪关系,就需要自己设置了),这样在localdev分支推送代码的时
候就简单了
可以看到本地master追踪远程的origin/master,本地localdev分支追踪远程的origin/dev分支,都有对应关系。
【step 4】小张在本地localdev分支修改代码,直接推送到远程origin/dev分支中