对于刚接触git的同学来学,学会看git分支图,可以更清楚地使用git参与团队协作开发。接下来,咱们就进行场景模拟,来演示下git的分支图是怎么产生的。
一. 项目立项,去github上创建仓库
项目通过了老板的审批,CTO此时去github上建仓库
这个大家都会,就不浪费大家时间了。
二,程序员小王进行开发
由于人手不够,暂时小王独自开发。首先在本地建立一个工作区(文件夹)
,然后克隆远程仓库的项目。
git clone https://github.com/****/gitunion.git
小王开发,新建文件夹wang_1.text,然后提交到本地
使用命令查看工作区状态:
git status
红色文件即表示git还未对该文件进行管理。我们必须让git管理他。
输入命令。
git add .//再次查看状态git status
此时颜色变绿,表示已被git托管。
提交被git托管的代码到暂存区
git commit -m "wang first commidt"
此时代码已经提交到暂存区了。我们可以继续创建文件wang_2.txt.然后按照一样的步骤提交。
输入命令:
git log
可以看到我们两次代码的提交信息(提交人,日期,message等)。此时我们使用gitbash自带的图形显示工具
输入命令就能显示
gitk
可以看到当前分支master(git默认的主分支)指向第二次提交。
此时小王提交本地分支到远程仓库的master分支。(注意:需要关闭gitk工具,才能再次输入命令)
git push origin master
三,小李加入团队并行开发
小李被hr招聘进来,和小王一起开发。他在本地克隆仓库,创建文件li_01.txt和文件li_02.txt。并进行了两次提交。使用
我们可以看到小李克隆的项目包含了小王的所有版本信息。这很好理解,因为小李是基于小王的版本克隆的。
接下来看下小李的git关系图。同意输入命令
gitk
在小李的版本库上,分支指向小李的最新提交。黄色节点是指当前版本指向。
小李开发了一段时间,把当前的代码提交到远程仓库后就离职了。
git push origin master
四,小王提交代码到远程仓库
小王在小李的开发期间,自己也在不断开发。也开发了wang_3.txt这个文件,并且提交到本地的版本库中(commit命令)。此时小王的提交历史只有他自己开发的三个。
版本关系如如下。
我们可以看到,小王和小李在各自的工作区中都是直线向前的。对于每个人所在的直线,git上称为泳道。
此时小王也提交了代码到远程仓库上。
git push origin master
提示提交被拒绝,原因是小李在小王提交之前有更新版本库,所以小王必须将远程版本库与本地更新,即pull远程项目,此机制是保证本地提交之前和远程版本库是一致的,这样就不会覆盖他人的修改了。
拉取远程代码命令:
git pull origin master
再执行提交代码
git push origin master
代码提交成功。
五,CTO小胡拉取项目验收
此时项目已开发结束,CTO小胡拉取项目
可以看到小胡的本地有了小李和小王两个人的开发成成果
此时打开gitk,观察版本的图形变化
可以看到我们的版本变化。
这是基本的分析。其实万变不离其中,再复杂的图谱也是围绕着本质来的。