在一篇介绍 Git 的文章中,作者说版本控制系统是为懒人准备的,它让懒人们比那些善于备份文档的勤劳人拥有更干净的文件系统以及更多的可以活着的时间。对此我深表赞同。同时在现在快节奏的社会中,提高团队合作效率更是团队生存的关键。所以,这坚定了我选择版本控制系统的信念。
git 是我第一个接触的版本控制系统。有同学说你怎么不用 SVN 啊,我反驳: Git 是 Linux 之父 LinusTorvalds 一手打造的,对于 Linux 系统和开源项目的管理当然好啦。其实我在 QtCreator 上搭建 git 的时候也是费了一番周折呢,现在终于成功了,高兴得想写一篇文章来总结一下。有不对的地方请尽管提出来,我会改正的。
我目前的开发环境: Ubuntu11.10 、 QtCreator2.41 、 Qt4.8 。
保证正确地安装了 QtCreator 了吗?请看这里 。
现在开始安装相关组件了:首先是 git 。 Ctrl+Alt+T 打开终端,输入 sudoapt-get install git ,回车,安装 git 。
为了方便地使用 git ,还必须安装 gitk 这个 git 的图形端。命令: sudoapt-get install gitk 。
随后是团队开发必须的 OpenSSH 了。因为要和很多台主机进行通信,所以我们必须确保你们的连接是安全的,这里 OpenSSH 能满足我们的需求。安装命令是: sudoapt-get installopenssh-client 。如果你自己创建一个代码库并且让自己的机器成为服务器,那么你还需要安装 OpenSSH 服务器版本,命令: sudoapt-get install openssh-server 。
有安装 OpenSSH 问题的,可以移步至:这里 。
安装完 git 后,我们看到, QtCreator 已经检测到了 git 的存在。在版本控制和工具菜单里面都有 git 选项。
网上有大量 git 命令行相关的文章,我也不再赘述了,我就介绍 git 怎样和 QtCreator 一起使用。注意: QtCreator 按照规范将路径中的所有中文转为 \nnn ( n 为一个数字)的形式,在 git 中这样会导致定位失败(因为 git 可以识别中文路径)。
创建一个新的项目吧,快捷键 Ctrl+n 。记得项目的路径中不能有中文,必须是纯英文的形式,在这里我建立一个名为“ test” 的纯 C 项目。
点击下一步,出现版本控制的选项,选择 git ,如下图。我们在创建项目的时候会有一个 .user 文件,保存了一些用户杂项配置,但是不同用户的喜好不同,因此此文件并没有被 git 管理,不得不说 QtCreator 这一点为我们考虑得十分细致。
下一步,接下来就不要我说了吧,完成。创建了一个纯 C 的项目,其实就是 HelloWorld 。我们假设这个 HelloWorld 就是第一个版本,我们要将这个版本作为初始版本,那么我们应该点击“工具➡ Git➡Commit……“ 作为我们的第一次提交,也是第一个版本。
填写作者和 Email 信息后,就可以写说明了。这里对“说明”输入框作一些说明:首先在我这个 QtCreator 版本一输入中文就崩溃(自动退出),很恼人的,所以这次我就没有填写中文信息了,但是使用 git 命令(命令: gitcommit ,打开 GNUnano 编辑器) 就可以填写中文。此外注意了吗?第一行是用粗体标志的呢,第二行为空,这是因为很多的信息服务(如接下来介绍的log )会将第一行作为题目,后面的作为正文。 命令
填写好了,并且选择了需要提交的文件之后,点击提交,这样 git 就为我们储存了一个版本的信息了。
想要看看自己提交的版本信息吗?点击“工具➡ Git➡Log“ ,可以显示提交的版本信息。如下图:
点击 2552bae ,就会显示用英文显示的版本信息,英文不好的同学们就糟糕了……
接下来我就要对这个项目做一些修改了,我们让它再显示一个文字: Hellogit! ,并且命名这个版本为 1.1 。首先我们对源文件 main.c 进行修改,修改后的 main.c 如下所示:
#include <stdio.h>
int main( void )
{
printf ( "Hello git!\n" );
printf( "Hello World!\n" );
return 0 ;
}
其中蓝色字体部分是我们添加的。接下来我们保存一下,但这并不意味着提交到 git 中了,因为当你点击“工具➡ Git➡ 状态“时,下面的输出会显示这一串文字:
#Changes not staged for commit:
#(use "git add <file>..." to update what will becommitted)
#(use "git checkout -- <file>..." to discard changesin working directory)
#
#modified: main.c
#
#Untracked files:
#(use "git add <file>..." to include in what will becommitted)
#
#test.pro.user
nochanges added to commit (use "git add" and/or "gitcommit -a")
显示了我们的 main.c 已经修改,但未提交至 git ( test.pro.user 未受 git 管理,因为上文说过了,每一个用户杂项都由一个 .user 保存着,失去它不会对项目的设置构成影响)。于是我们还得再提交( commit )一下了。
填完了后点击提交,新的版本 1.1 就完成了。怎么样,是不是很简单啊。
查看一下 log (工具➡ Git➡Log ),现在有两个版本了!
假设我们的 1.1 版本写得不好,或者把原有的代码改混乱了,我们想还原到原来的版本1.0那该怎么办呢?很简单,使用 gitk 就可以解决问题。打开 gitk ,出现这样的界面:
选择 Ver1.0 ,点击右键,选择“ Resetnaster branch tohere” ,在弹出的对话框中选择 Hard ,并且单击 OK 就完成了版本的还原。需要注意的是,选择 Hard 模式意味着在新版本上的一切修改都作废,所以要慎重处理。
回到 QtCreator 界面,发现提示重新载入文件,点击“全部是”就可以了。
提到版本控制,就不得不提到它的一个重要的功能:分支功能。假如我们制作项目需要一些差异化的版本(例如 Windows7 家庭版和 Windows7 旗舰版等),但是它们都是拥有相同的部分,仅仅有一些部分是不同的,那么我们完全可以先制作相同的底层部分,然后创建多个分支,分别制作,这样可以拥有两个版本进行评估,最终选择一个更好的版本,也可以两个版本分别发售。在这一点上, git 又帮了我们大忙,下面我就介绍在 QtCreator 上是怎样使用 git 的分支功能的。有不对的地方请尽管提出来,我会改正的。
我目前的开发环境: Ubuntu11.10 、 QtCreator2.41 、 Qt4.8 。
首先打开 QtCreator ,点击“工具➡ Git➡Log” 来查看我们的 Log 。如下图:
我们看到第一行中间的括号( HEAD,master ),它表示了当前 head 指针指向的是这个版本,并且这个版本所在的分支是 master 。怎样查看分支呢?很简单,点击“工具➡ Git➡Branches...” 就行了。
这里有一个 master 分支,正是我们以前编辑的分支。接下来我们创建另外一个分支,点击“添加”,创建一个名为 Experimental 的分支吧(不要选“跟踪本地分支 master” )。然后我们先点击 Experimental 分支,然后点击 checkout 来切换到 Experimental 分支。关闭对话框,接下来的动作就在 Experimental 分支上进行了。
我们在 main.c 上进行一点修改,去掉 HelloWorld 显示,改为显示三角形的面积。
< span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > < span style = "color:#000080;" > #include</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;"><stdio.h></span></span></span> <span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;"><span style="color:#000080;">#include</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;"><math.h></span></span></span> <span style="color:#C0C0C0;"> </span> <span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;"><span style="color:#808000;">float</span><span style="color:#C0C0C0;"> </span>AreaOfTriangle<span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#808000;">float</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">a,</span><span style="color:#C0C0C0;"> </span><span style="color:#808000;">float</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">b,</span><span style="color:#C0C0C0;"> </span><span style="color:#808000;">float</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">c</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">)</span></span></span> <span style="color:#000000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">{</span></span></span> <span style="color:#C0C0C0;"> </span><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;"><span style="color:#808000;">float</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">p</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">=</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">a</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">+</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">b</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">+</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">c</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">)</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">/</span><span style="color:#C0C0C0;"> </span><span style="color:#000080;">2.0f</span><span style="color:#000000;">;</span></span></span> <span style="color:#C0C0C0;"> </span><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;"><span style="color:#808000;">return</span><span style="color:#C0C0C0;"> </span>sqrt<span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">p</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">*</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">p</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">-</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">a</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">)</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">*</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">p</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">-</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">b</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">)</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">*</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">p</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">-</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">c</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">)</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">);</span></span></span> <span style="color:#000000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">}</span></span></span> <span style="color:#C0C0C0;"> </span> <span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;"><span style="color:#808000;">int</span><span style="color:#C0C0C0;"> </span>main<span style="color:#000000;">(</span><span style="color:#808000;">void</span><span style="color:#000000;">)</span></span></span> <span style="color:#000000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">{</span></span></span> <span style="color:#C0C0C0;"> </span><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">printf<span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">"Hello</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">git!\n"</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">);</span></span></span> <span style="color:#C0C0C0;"> </span><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">printf<span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">"The</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">area</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">of</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">a</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">triangle</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">is:</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">%f\n"</span><span style="color:#000000;">,</span></span></span> <span style="color:#C0C0C0;"> </span><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">AreaOfTriangle<span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#000080;">6.0f</span><span style="color:#000000;">,</span><span style="color:#C0C0C0;"> </span><span style="color:#000080;">6.0f</span><span style="color:#000000;">,</span><span style="color:#C0C0C0;"> </span><span style="color:#000080;">6.0f</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">)</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">);</span></span></span> <span style="color:#C0C0C0;"> </span><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;"><span style="color:#808000;">return</span><span style="color:#C0C0C0;"> </span><span style="color:#000080;">0</span><span style="color:#000000;">;</span></span></span> <span style="color:#000000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">}</span></span></span>
其中蓝色的部分是我们更改过的代码,编译运行后我们可以提交这段代码。我们就将这段代码的版本定义为 1.2a ,提交界面如下图所示:
提交完了后查看版本信息:
< span style = "color:#000000;" > < span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > * a4cbfc4 ( HEAD , Experimental ) < / span > < / span > < span style = "font-size:12px;" > 蒋彩阳 < / span > < span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > Ver . 1.2a 2012 - 10 - 27 10 : 28 : 11 + 0800 < / span > < / span > < / span > < span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > * a03507a ( master ) < / span > < / span > < span style = "font-size:12px;" > 蒋彩阳 < / span > < span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > Ver . 1.1 2012 - 10 - 24 08 : 56 : 34 + 0800 < / span > < / span > < span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > * 2552bae < / span > < / span > < span style = "font-size:12px;" > 蒋彩阳 < / span > < span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > Ver . 1.0 2012 - 10 - 20 11 : 27 : 13 + 0800 < / span > < / span >
此时 HEAD 指针指向了 Experimental 分支里面的 Ver.1.2a 版本了。
这个版本也算是成功的了,于是我将精力转向了另一个版本,我想让它实现对圆锥体积的计算。首先我们要将 HEAD 指针回调。 点击“工具➡ Git➡Branches...” ,点击 master 分支进行 checkout ,切换到 master 分支,我们看到我们的 main.c 回到了原来的状态。查看一下 Log 看是否正确地切换?接下来我们再对 main.c 进行修改,让它能够计算圆锥的体积:
< span style = "color:#000000;" > < span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > < span style = "color:#000080;" > #include</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;"><stdio.h></span></span></span></span> <span style="color:#C0C0C0;"> </span> <span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;"><span style="color:#808000;">float</span><span style="color:#C0C0C0;"> </span>VolumeOfTaper<span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#808000;">float</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">radius,</span><span style="color:#C0C0C0;"> </span><span style="color:#808000;">float</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">height</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">)</span></span></span> <span style="color:#000000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">{</span></span></span> <span style="color:#C0C0C0;"> </span><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;"><span style="color:#808000;">return</span><span style="color:#C0C0C0;"> </span><span style="color:#000080;">3.1416f</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">*</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">radius</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">*</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">radius</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">*</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">height</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">/</span><span style="color:#C0C0C0;"> </span><span style="color:#000080;">3.0f</span><span style="color:#000000;">;</span></span></span> <span style="color:#000000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">}</span></span></span> <span style="color:#C0C0C0;"> </span> <span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;"><span style="color:#808000;">int</span><span style="color:#C0C0C0;"> </span>main<span style="color:#000000;">(</span><span style="color:#808000;">void</span><span style="color:#000000;">)</span></span></span> <span style="color:#000000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">{</span></span></span> <span style="color:#C0C0C0;"> </span><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">printf<span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">"Hello</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">git!\n"</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">);</span></span></span> <span style="color:#C0C0C0;"> </span><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">printf<span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">"The</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">volume</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">of</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">taper</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">is</span><span style="color:#C0C0C0;"> </span><span style="color:#008000;">%f\n"</span><span style="color:#000000;">,</span></span></span> <span style="color:#C0C0C0;"> </span><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">VolumeOfTaper<span style="color:#000000;">(</span><span style="color:#C0C0C0;"> </span><span style="color:#000080;">10.0f</span><span style="color:#000000;">,</span><span style="color:#C0C0C0;"> </span><span style="color:#000080;">5.0f</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">)</span><span style="color:#C0C0C0;"> </span><span style="color:#000000;">);</span></span></span> <span style="color:#C0C0C0;"> </span><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;"><span style="color:#808000;">return</span><span style="color:#C0C0C0;"> </span><span style="color:#000080;">0</span><span style="color:#000000;">;</span></span></span> <span style="color:#000000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">}</span></span></span>
提交一下,这次将其的版本命名为 Ver.1.2b ,这样我们项目的两个版本都做好了。如果我们想查看 Experimental 分支下的当前版本 Ver.1.2a 的情况,仍然可以使用“工具➡ Git➡Branches...” 并对 Experimental 进行 checkout 就可以了。
嗯,我想知道这两个版本究竟有什么不一样,要来回切换分支并且花很长的时间来找不同吗?哪有这么麻烦,很简单,使用“工具➡ Git➡Branches...” ,选择一个分支,这里是 Experimental ,点击 diff ,来看看和已经 checkout 了的 master 分支究竟有什么不同。下面是截图:
< span style = "color:#000000;" > < span style = "font-family:'DejaVu Sans', sans-serif;" > diff -- git a / main . c b / main . c < / span > < / span > < span style = "color:#000080;" > < span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > index c450bd0 . . e9b2f1f 100644 < / span > < / span > < / span > < span style = "color:#000080;" > < span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > -- - a / main . c < / span > < / span > < / span > < span style = "color:#000080;" > < span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > ++ + b / main . c < / span > < / span > < / span > < span style = "color:#0000FF;" > < span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > @ @ - 1 , 17 + 1 , 15 @ @ < / span > < / span > < / span > < span style = "font-family:'DejaVu Sans Mono', monospace;" > < span style = "font-size:12px;" > #include <stdio.h></span></span> <span style="color:#FF0000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">-#include <math.h></span></span></span> <span style="color:#FF0000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">-float AreaOfTriangle( float a, float b, float c )</span></span></span> <span style="color:#00AA00;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">+float VolumeOfTaper( float radius, float height )</span></span></span> <span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">{</span></span> <span style="color:#FF0000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">- float p = ( a + b + c ) / 2.0f;</span></span></span> <span style="color:#FF0000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">- return sqrt( p * ( p - a ) * ( p - b ) * ( p - c ) );</span></span></span> <span style="color:#00AA00;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">+ return 3.1416f * radius * radius * height / 3.0f;</span></span></span> <span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">}</span></span> <span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">int main(void)</span></span> <span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">{</span></span> <span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">printf( "Hello git!\n" );</span></span> <span style="color:#FF0000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">- printf( "The area of a triangle is: %f\n",</span></span></span> <span style="color:#FF0000;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">- AreaOfTriangle( 6.0f, 6.0f, 6.0f ) );</span></span></span> <span style="color:#00AA00;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">+ printf( "The volume of taper is %f\n",</span></span></span> <span style="color:#00AA00;"><span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">+ VolumeOfTaper( 10.0f, 5.0f ) );</span></span></span> <span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">return 0;</span></span> <span style="font-family:'DejaVu Sans Mono', monospace;"><span style="font-size:12px;">}</span></span>
这样看不就一清二楚了嘛。
此外还可以将某个分支删除(在“工具➡ Git➡Branches...” 中),为某个分支进行重命名,以及更加强大的 gitk 工具,这里就不再向大家介绍了。只要大家入门了,这篇教程就达到目的了。还希望大家一起努力,利用强大的编程工具制作出更加强大的作品来。