简介
在学习Git的版本控制工具之前,需要做好准备工作。所谓的准备工作就是要给一个项目执行提交操作,这里仍然选择上一节所使用的项目(G:/AndroidProject/BlueTooth)来演示。
输入以下命令后,准备工作就完成了。
git init
git add .
git commit -m "First Commit"
分支
分支是版本控制工具中比较高级且比较重要的一个概念,它主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响。分支的工作原理示意图如下所示:
分支的英文名是branch,如果想要查看当前的版本库当中有哪些分支,可以使用以下命令:
git branch
结果如图所示:
由于该项目中还没有创建过任何分支,因此只有一个master分支存在,这也就是前面所说的主干线。现在可以创建一个分支,命令如下:
git branch version1.0
这也就创建了一个名为version1.0的分支,通过再次输入git branch命令可以检查一下现有的分支,结果如图所示:
从图中可以看到,master分支的前面有一个“*”号,说明目前这个项目是在master分支上的,要想切换到新建的version1.0分支,可以使用以下的命令:
git checkout version1.0
再次输入git branch来进行检查,结果如图所示:
从图中可以看到,该项目已经成功切换到version1.0这个分支上了。
需要注意的是,在version1.0分支上修改并提交的代码将不会影响到master分支。同样的道理,在master分支上修改并提交的代码也不会影响version1.0分支。因此,如果在version1.0分支上修改了一个bug,在master分支上这个bug仍然是存在的,要解决这个问题,就可以使用以下的命令来完成合并操作:
git checkout master
git merge version1.0
运行结果如图所示:
通过这两行命令,就可以把version1.0分支上修改并提交的内容合并到master分支上。当然,在合并分支的时候还有可能出现代码冲突的情况,这个时候只能静下心来慢慢解决这些冲突,Git没法起到帮助了。
最后,若是不需要version1.0这个分支了,就可以使用如下命令将这个分支删除掉:
git branch -D version1.0
运行结果如图所示:
与远程版本库协作
所有版本控制工具最重要的一个特点就是可以使用它来进行团队合作开发。
每个人的电脑上都会有一份代码,当团队的某个成员在自己的电脑上编写完成了某个功能后,就将代码提交到服务器,其他的成员只需要将服务器上的代码同步到本地,就能保证整个团队所有人的代码都相同。这样的话,每个团队成员就可以各司其职,大家共同来完成一个较为庞大的项目。
要完成团队合作开发,就需要有一个远程的版本库,团队的每个成员都从这个版本库中获取到最原始的代码,然后各自进行开发,并且以后每次提交的代码都同步到远程版本库上就可以了。另外,团队的每个成员最好都要养成经常从版本库获取最新代码的习惯,不然的话,大家的代码就很有可能经常出现冲突。
假设现在有一个远程版本库的Git地址是 https://github.com/example/test.git ,就可以使用以下命令将代码下载到本地:
git clone https://github.com/example/test.git
之后若有人在这份代码的基础上进行了一些修改和提交,就需要借助push命令来把本地修改的内容同步到远程版本库上,命令如下:
git push origin master
其中origin部分指定的是远程版本库的Git地址,master部分指定的是同步都哪一个分支上,上述命令就完成了将本地代码同步到https://github.com/example/test.git 这个版本库的master分支上的功能。
除此之外,Git提供了两种命令来完成上面的功能,分别是fetch和pull,fetch的语法规则和push类似,如下所示:
git fetch origin master
执行这个命令后,就会将远程版本库上的代码同步到本地,不过同步下来的代码并不会合并到任何分支上去,而是会存放到一个origin/master分支上,这时可以通过diff命令来查看远程版本库上到底修改了哪些东西:
git diff origin/master
之后再调用merge命令将origin/master分支上的修改合并到主分支上即可,如下所示:
git merge origin/master
而pull命令则是相当于将fetch和merge这两个命令放在一起执行,它可以从远程版本库上获取最新的代码并且合并到本地,命令如下:
git pull origin master