写在前面,工作中我们在处理代码时都会要碰到代码版本管理,一般情况我们碰得最多的应该就是Git和SVN了。本篇文章主要是想把自己平时工作中Git的一些使用感想给记录下来,一是对Git的一个使用总结,同时也想和大家分享一下自己的使用的一些心得。本文会以平常的使用情景结合图文的方式来作介绍,如有错误请各位大虾给以指正。
一、代码下载
当我们要参与到一个新的案子中去时,那首先的第一件事就是搭环境,下代码。一般我们都会有一个Git服务器上来托管我们的代码,然后团队的成员把代码从服务器下载到自己的本地的机器上进行开发然后又再把对代码的添加修改推送到服务器。在此我在本机上搭建了一个Apach +Git的Server来模拟远程的Git代码服务器。该代码仓库的地址为127.0.0.1:git_test.git,其中127.0.0.1为服务器的地址git_test.git为代码仓库。我们可以通过如下图语句就把代码下载到本地。
git clone 127.0.0.1:git_test.git
如下图所示,代码已经下载到本地,通过ls可以看到git_test的工程目录已经下载到本地。
进入到git_test工作目录,通过ls可以看到工程的文件(测试目录只有一个README文件),通过git branch可以看到我们已经切到了工程的master分枝。
通过一条git clone语句我们就可以把服务器上的代码给下载到我们的本地机器上来,当然。有的大的工程项目可能会用Repo+Git的方式,但一般情况下项目中的相关代码负责人会把下代码的相关语句给项目成员的。
二、代码添加修改与提交
通常来说我们的大部时间都是在本地对代码修改或添加,然后再把相关的修改提交到服务器。接下来我们就来模拟代码的修改与提高。
1)强烈的建议新开一个分枝来作开发修改,然后再把工作给合到主线分枝上来,最后再推到服务器。我们通过git branch +分枝名 来新建一个名叫developer分枝(当然也可用git checkout -b 新分枝名 来创建新枝)。最后用git branch命令可以看到我们除了master分枝外还有一个developer分枝。
2)有了developer分枝后,我们还要切到developer分枝上一,从上图我们看到时master分枝的前面有一个*.说明我们在master分枝上。接下来我们要通过git checkout来切换到developer分枝上。再次通过git branch命令我们看到现在已经是在developer分枝上了。(强烈建议在做操作前多用git branch 看看自己在什么分枝上).
3)我们接下来添加一个main.c文件,并且把main.c文件名给加到README中。这样我们对代码的修改就包括对README修改和添加新文件。
4)添加了新文件并对README做修改后,我们可以先用git status来看看我们作的修改情况,从下图中我们可以看到以下两个信息
->Changes not staged for commit 代表我们对之前已经存在的文件有作了修改,我们可以看到README为红色,前面有一个modified标识
->Untracked files代表这是新产生的文件,但还没有被我们加到仓库管理。
5)查看了修改的情况后,我们现在就可以把我们的修改给保存了git的暂存区,从上面的信息我们可以用git add <file>...来把修改和新添加的文件存到暂存区。紧接着我们再用git status来查看当前的情况时,发现我们修改或添加的文件名变绿了,这就代表对应的文件已经放到了暂存区。
6)把文件经放到了暂存区以后。接下来我们就需为我们的修改作一些提交信息,表明这次的修改的原因及目的用时把修改提交到当前的分枝上。我们可以用git commit命令来完成。运行git commit命令后,git会调用默认的Editor来给我们输入提交信息(注,有的系统默认会打开nano,有的则是其它vim或其它的编辑器,如下图的就是nano,当然这个是可以修改配置成我们喜欢的Editor,我们后续会讲怎么配置),输入完提交信息保存退出。这时我们的修改就提交到了本地了。
输入提交信息
退出保存可以看一相关的提交处理信息
7)些时我们的代码已经提交到了本地的developer分枝上了,这时我们运行git show HEAD还可以查看刚才作了什么修改(后续会说介绍一些常用的查看提交及修改的命令及参数)。从下图我们可以看到我们的提交的Comit ID,提交信息,以及修改的部分(图中绿色部分就为我们新添加的两行,因为main.c只创建,没有写内容)
8)虽然我们个性提交到了本地分枝上,可以这些修改都只是本地的,我们还需要把修改给推送到服务器上,这样其它的小伙伴才能更新代码看到我们的修改,这时我们就要用git push 命令来把我们的修改推送到服务器。由于我们是在本地developer分枝作的修改,我们需要先用git merge命令把我们的修改合到本地master分枝,再推送到服务器。我们可以通过以下几步来完成。
a-->因为我们当前是在developer分枝上,所以我们得要先切到master分枝上,用git checkout master来切换到master分枝,再通过git branch就可以看到我们已经在master分枝上了。
b->来到了master分枝后,我们先运行git pull origin master,这样的话,如果其它小伙伴有做了修改的话,我们先把他们的修改更新到本地master。我们的情况是别的小伙伴还没有做修改,所以结果提示Already up-to-date.后续会介绍当别的小伙伴作了修改时,与我们的修改冲突时怎么解决)
c->这时我们可以把developer上的提交给合到master分枝上来了,通过git merge developer来完成,因为刚才更新服务器上的代码时,没有别人的修改,所以我们developer上的修改就轻松的合过来了。
d->这时我们的修改提交已经从developer合到了master上了。一切准备就绪后,就只差推送到服务器了。我们通过git push origin master来把我们的当前master分枝推送到服务器的master分枝。master->master表示从我们的本地的master分枝推到服务器的master分枝。
好了,到此时,我们所做的修改就顺利的到了服务器了,其它小伙伴一更新就可以把我们的修改同步到他们本地了!接下来就是重复的修改+提交+推送到服务器了。。后续会继续关于冲突的解决及合并其他的代码等功能。