在QtCreator上使用版本控制系统Git(二)

本文详细介绍如何在QtCreator中使用版本控制系统Git的分支功能,包括创建、切换分支及比较不同分支间的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<style type="text/css"> <!-- @page {margin:2cm} pre.cjk {font-family:"DejaVu Sans Condensed",monospace} p {margin-bottom:0.21cm} --> </style>

QtCreator

使用版本控制系统Git(二)

提到版本控制,就不得不提到它的一个重要的功能:分支功能。假如我们制作项目需要一些差异化的版本(例如Windows7家庭版和Windows7旗舰版等),但是它们都是拥有相同的部分,仅仅有一些部分是不同的,那么我们完全可以先制作相同的底层部分,然后创建多个分支,分别制作,这样可以拥有两个版本进行评估,最终选择一个更好的版本,也可以两个版本分别发售。在这一点上,git又帮了我们大忙,下面我就介绍在QtCreator上是怎样使用git的分支功能的。有不对的地方请尽管提出来,我会改正的。

我目前的开发环境:Ubuntu11.10QtCreator2.41Qt4.8

首先打开QtCreator,点击“工具➡Git➡Log”来查看我们的Log。如下图:


我们看到第一行中间的括号(HEAD,master),它表示了当前head指针指向的是这个版本,并且这个版本所在的分支是master。怎样查看分支呢?很简单,点击“工具➡Git➡Branches...”就行了。


这里有一个master分支,正是我们以前编辑的分支。接下来我们创建另外一个分支,点击“添加”,创建一个名为Experimental的分支吧(不要选“跟踪本地分支master”)。然后我们先点击Experimental分支,然后点击checkout来切换到Experimental分支。关闭对话框,接下来的动作就在Experimental分支上进行了。

我们在main.c上进行一点修改,去掉HelloWorld显示,改为显示三角形的面积。

#include <stdio.h>
#include <math.h>
 
float AreaOfTriangle( float a, float b, float c )
{
    float p = ( a + b + c ) / 2.0f;
    return sqrt( p * ( p - a ) * ( p - b ) * ( p - c ) );
}
 
int main(void)
{
    printf( "Hello git!\n" );
    printf( "The area of a triangle is: %f\n",
            AreaOfTriangle( 6.0f, 6.0f, 6.0f ) );
    return 0;
}

其中蓝色的部分是我们更改过的代码,编译运行后我们可以提交这段代码。我们就将这段代码的版本定义为1.2a,提交界面如下图所示:


提交完了后查看版本信息:

* a4cbfc4  (HEAD, Experimental) 蒋彩阳 Ver. 1.2a 2012-10-27 10:28:11 +0800
* a03507a  (master) 蒋彩阳 Ver. 1.1 2012-10-24 08:56:34 +0800
* 2552bae  蒋彩阳 Ver. 1.0 2012-10-20 11:27:13 +0800

此时HEAD指针指向了Experimental分支里面的Ver.1.2a版本了。

这个版本也算是成功的了,于是我将精力转向了另一个版本,我想让它实现对圆锥体积的计算。首先我们要将HEAD指针回调。点击“工具➡Git➡Branches...”,点击master分支进行checkout,切换到master分支,我们看到我们的main.c回到了原来的状态。查看一下Log看是否正确地切换?接下来我们再对main.c进行修改,让它能够计算圆锥的体积:

#include <stdio.h>
 
float VolumeOfTaper( float radius, float height )
{
    return 3.1416f * radius * radius * height / 3.0f;
}
 
int main(void)
{
    printf( "Hello git!\n" );
    printf( "The volume of taper is %f\n",
            VolumeOfTaper( 10.0f, 5.0f ) );
    return 0;
}

提交一下,这次将其的版本命名为Ver.1.2b,这样我们项目的两个版本都做好了。如果我们想查看Experimental分支下的当前版本Ver.1.2a的情况,仍然可以使用“工具➡Git➡Branches...”并对Experimental进行checkout就可以了。

嗯,我想知道这两个版本究竟有什么不一样,要来回切换分支并且花很长的时间来找不同吗?哪有这么麻烦,很简单,使用“工具➡Git➡Branches...”,选择一个分支,这里是Experimental,点击diff,来看看和已经checkout了的master分支究竟有什么不同。下面是截图:

diff --git a/main.c b/main.c
index c450bd0..e9b2f1f 100644
--- a/main.c
+++ b/main.c
@@ -1,17 +1,15 @@
 #include <stdio.h>
-#include <math.h>
 
-float AreaOfTriangle( float a, float b, float c )
+float VolumeOfTaper( float radius, float height )
 {
-    float p = ( a + b + c ) / 2.0f;
-    return sqrt( p * ( p - a ) * ( p - b ) * ( p - c ) );
+    return 3.1416f * radius * radius * height / 3.0f;
 }
 
 int main(void)
 {
     printf( "Hello git!\n" );
-    printf( "The area of a triangle is: %f\n",
-            AreaOfTriangle( 6.0f, 6.0f, 6.0f ) );
+    printf( "The volume of taper is %f\n",
+            VolumeOfTaper( 10.0f, 5.0f ) );
     return 0;
 }

这样看不就一清二楚了嘛。

此外还可以将某个分支删除(在“工具➡Git➡Branches...”中),为某个分支进行重命名,以及更加强大的gitk工具,这里就不再向大家介绍了。只要大家入门了,这篇教程就达到目的了。还希望大家一起努力,利用强大的编程工具制作出更加强大的作品来。


### 如何在 Qt Creator使用 Git 进行版本控制 #### 安装必要的工具 为了能够在 Qt Creator使用 Git 版本控制系统,首先需要确保已经安装了 Git 工具以及对应的 Qt Creator 插件。可以通过以下方式完成安装: - **安装 Git**:下载并安装适用于操作系统的最新版 Git 软件[^2]。 - **启用 Qt CreatorGit 支持**:打开 Qt Creator 后,在首选项设置中找到 Version Control 部分,并确认已启用了对 Git 的支持[^1]。 #### 初始化项目仓库 如果尚未初始化 Git 仓库,则可以在项目的根目录下通过命令行运行 `git init` 来创建一个新的本地仓库。或者直接在 Qt Creator 内部执行此操作: - 打开菜单栏中的 “Version Control” -> “Create Repository”,选择合适的选项以初始化新的 Git 仓库[^3]。 #### 提交更改到仓库 当修改或新增文件之后,可以按照下面流程提交这些改动至 Git 仓库: 1. 切换到 Qt Creator 下方的 Changes 窗口查看当前未提交的变化列表; 2. 对于希望纳入本次提交范围内的每一项变动逐一标记为 staged (即添加进入暂存区); 3. 输入描述性的 commit message 并点击 Commit 按钮保存此次更新记录。 #### 推送数据远程同步 为了让团队成员之间能够共享工作成果或是备份自己的代码库,通常还需要将本地所做的所有提交推送到远端服务器上去。具体做法如下所示: ```bash # 假设目标地址为 origin master分支 git push origin master ``` 当然也可以借助图形界面完成推送动作——只需右键选中某个特定分支名再选取 Push 即可。 #### 解决冲突情况处理 偶尔会出现多人编辑同一份文档而引发合并上的矛盾状况发生的时候,此时就需要手动介入解决这些问题后再继续后续步骤比如重新尝试 merge 或者 rebase 等操作直至完全消除分歧为止。 ```python def resolve_conflict(file_path): with open(file_path, 'r') as file: content = file.readlines() resolved_content = [] conflict_started = False for line in content: if "<<<<<<< HEAD" in line or "=======" in line or ">>>>>>> branch_name" in line: if not conflict_started: conflict_started = True continue if conflict_started and ("<<<<<<< HEAD" not in line and "=======" not in line and ">>>>>>> branch_name" not in line): resolved_content.append(line.strip()) elif not conflict_started: resolved_content.append(line.strip()) return "\n".join(resolved_content) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值