原文地址:http://www.qtcn.org/bbs/simple/?t16960.html
Qt Creator是针对Qt应用开发平台专门设计的IDE开发工具,集成了很多功能,分别有windows、Linux、Mac版本。对于那些经常使用Qt的开发者,就不多介绍了。下面讲讲如何在Qt Creator中使用版本控制,Qt Creator中可以选择Git或是Subversion来进行版本控制,我选择Git,为什么?你可以看看这两篇文章<<活灵活现用Git-基础篇>>和<<活灵活现用Git-技巧篇>>,如果你早就熟知Git,快走吧。
这里有几个前提要注意:
1 我们是在Windows下,但Git最初是在Linux下诞生的(大神),好在已有热心的开发者制作了针对Windows的安装包,目前已经几个类似的开源项目,都是将Git迁移到Windows来的,这里有个不错的,而且是http://git-scm.com/上钦点的,下载地址是msysgit,下载后直接安装,全部默认,当然如果你不在乎安装路径的话,完成后,别忘了设置PATH路径,加入“Git安装目录\bin”。
2 如果你是在本机下或是在公司内部环境中使用Git,具体的环境搭建请上网查阅。这里我们的模式是使用已有的Git托管服务,然后在本地开发,并同步到托管服务器上。托管服务很多啦,像SourceForge、Google Code,但好像都是svn的,Git的比较好的有GitHub,注册后有300M的免费空间,掏钱则可以换得更大的空间和更多的服务,赶快去吧。
如果你已经安装好msysgit并且开通了GitHub的托管服务,就往下继续吧。
3 设置SSH公钥,注意:这一步的正确配置非常重要,我们至少得有一个SSH公钥才能连接并操作Github或其他repo点上的项目。打开Git Bash,这里我们要配置本地与github.com之间的SSH公钥,
首先,请输入:ssh-keygen -C "你的email地址" -t rsa ,确定回车键连续4次,不管中间要求输入其他东西。该命令将生成一对非对称的公\私密钥,默认它们被存储在
XP/2003用户:c:\Documents and Settings\登陆名\.ssh
Vista用户: c:\Users\登陆名\.ssh
该.ssh文件夹下面,密钥放在id_rsa文件里面,不用理会它;SSH公钥放在id_rsa.pub里面,请用文本编辑器打开它,复制里面所有的字符。假定此时的你已经注册了Github用户,在账号管理account页面,有个大大的“SSH Public Keys”栏目,请点击“add another public key”,Title可空(默认值为email)或者任意,直接黏贴刚才复制的字符在Key文本域里面,最后点击Add Key!
4 SSH成功创建后,在Github网站上创建一个新的项目,创建新的项目/ Create a New Repository,比如创建一个god的项目,记住你看到的Your Clone URL:git@github.com:ynshisss/god.git ,ynshisss是我的用户名,“/”后是我的项目名称“god”。Okay,回到刚才的DOS窗口,我们要设置全局用户名称以及Email以方便Git知道你是谁,分别输入:
git config --global user.email “你的email地址”
git config --global user.name “你的名称”
其实不严格来说,这一步可忽略,它并不影响以后你对项目的各种操作行为,只是让Git记录是由谁在执行操作。本人愚见认为在多人的团队开发过程中同一个项目用同一个SSH公钥的时候可见效果。
5 我们先在本地建个Git仓库用来存放你的项目,在D:\下新建名为“God”的文件夹,然后cd到D:\God\目录下,
键入>git init 来系统初始化当前的Git仓库目录
键入>touch readme 用touch命令创建名为readme的文件
键入>git add readme 把文件readme加入git的版本控制
键入>git commit –m ‘add file readme’提交新版本至git仓库
键入>git remote add origin git@github.com:ynshisss/god.git 在本地为远程服务器建立一个名为origin的分支,以后你要提交本地更新到远程服务器时,就可以用origin别名替代“git@github.com:ynshisss/god.git”
键入>git pull origin master 把远程服务器master分支的内容更新至本地分支(默认情况下,你没有创建新的分支,所以远程和本地都只有一个主分支,名称都是master,具体分支的用法请参考Git官方手则)
键入>git push origin master 把本地master分支所有的修改提交至远程git服务器上的master分支
完成了以上操作后,你可以访问下GitHub上你的项目,看看god下是不是有个文件readme
6 打开Qt Creator,在新建的本地Git仓库目录即D:\God\下新建一个Qt的项目,注意你的项目一定要在Git仓库目录下,否则Qt Creator不能启用版本控制,设置Tools—>Options...-->Git,启用环境变量,确保路径能找到git.exe。
选择Window—>Output Panes -->Git,打开Git提示信息输出窗口,随便编辑一下你的项目,如修改下main.cpp,然后
选择Tools—>Git-->Commit命令提交修改,如果信息提示“git status -u命令错误或无效”说明PATH变量找不到git.exe,重新设置环境变量,commit是将更新提交到本地仓库,此时会打开一个提交窗口,要你输入提交信息,所有信息都要输入。
完成提交后选择Tools—>Git-->Push命令将本地版本同步到服务器,如果信息提示“time out”,这是什么问题呢?
如果此时我用Git Bash环境,cd到D:\God\下,键入>git push,不成功,看看提示信息,大概是说你想同步到哪里的分支去,如果是针对当前的分支可设置config...,好吧我们再键入>git push origin master,成功了,原来是因为Qt Creator中的Push命令找不到远程服务器地址和同步的分支,怎么办,刚才提示了说你可以用config设置全局变量来实现,但更好的做法是修改D:\God\.git\config文件,打开它,看看有些什么:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = git@github.com:ynshisss/god.git
fetch = +refs/heads/*:refs/remotes/origin/*
在config文件中加入:
[branch "master"]
remote = origin
merge = refs/heads/master
现在当你使用>git push命令时,同步的是master主分支,它的远程remote则是origin,也就是git@github.com:ynshisss/god.git。
再次使用Qt Creator来同步吧,更新远程到本地则使用push (pull),更多Git命令请查阅官方手则。