
Qt Creator中使用GitHub进行版本控制
GitHub是目前最流行的代码仓库,通过 Qt Creator 可以很方便的访问 GitHub ,因为项目需要故作此篇教程,以Windows系统为例简单介绍一下配置方法以及团队通过fork进行协作的方法。
1、下载并安装 git
首先安装 Git(msysGit) 最新版是2.18.0,下载地址 http://git-scm.com/downloads
安装很简单,请按图操作
2、GitHub 注册
要托管到 GitHub ,那你就应该要有一个属于你自己的 GitHub 帐号,所以你应该先到https://github.com注册。
3、在 Git 中设置用户名、邮箱
安装完成后,打开 Git Bash,设置用户名和邮箱,邮箱最好与github注册的邮箱一致,便于记忆。代码如下:
git config --global user.name "你自己的用户名"
git config --global user.email "你自己的邮箱"
配置完成后,我们可以再次输入,不包括名称,可以看到配置成功了
4、生成密钥并设置
生成密匙,注意参数大小写并且不要设置密码(直接回车)。
ssh-keygen -t rsa -C "你自己的邮箱"
生成后的公匙文件在 C:\Users\用户名.ssh\id_rsa.pub
打开密匙文件并复制其中内容将该密匙添加到github (Settings-> SSH and GPG keys-> new SSH key),然后添加公共密钥
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
git推荐使用SSH协议的原因:
使用SSH协议可以避免每次push输入密码。前提是账户里配置好SSH密钥。git@github.com开头的就是SSH协议。使用Https协议则会导致每次都输入用户名和密码。
ex:以下5-6步为团队负责人或单人项目配置,其他成员操作在后面介绍。
5、在GitHub中新建一个库
创建操作如图:
创建成功后会出现设置提示信息界面,会看到如下类似内容:
6、配置Qt Creator的git设置
在Qt Creator中打开工具/Tools-->选项/Options -->版本控制-->Git,在Prepend toPATH中设置Git的所在目录后确定并重启QtCreator。
在Tools菜单就会看到Git项,选择 创建仓库... 添加一个仓库
也可以使用Git命令完成仓库的新建:
来到工程的目录下,右键-->“Git Bash Here”;或者“菜单”-->“所有程序”-->“Git”-->“Git Bash”,输入工程目录“cd /e/Windows7_share/Qt5.5/project/myStyle”(这里替换为你自己的工程目录)
输入"git init"代码仓库就创建了,继续输入“ls -al”就可以看到目录下有个.git文件夹。
并输入刚才 GitHub 的 SSH 地址信息(https://github.com/hebbely/QtDemo.git)(这里替换为你自己项目的地址信息)
git remote add origin https://github.com/hebbely/QtDemo.git
接下来编辑项目,需要同步到GitHub时进行以下操作:
git add . (将改动添加到暂存区)
git commit -m "提交说明"
git push origin master (将本地更改推送到远程master分支)
如果在github的remote上已经有了文件,会出现错误。此时应当先pull一下,即:
git pull origin master
git push-u origin master
这样就完成了第一次推送(push)。以后就可以直接在QtCreator中操作,如
ex:以下第7步为拓展知识。
7、git submodule
Git归并有两种策略:递归,章鱼。
A.递归策略:当分支数只有两个的时候。
B.章鱼策略:当分支数大于两个的时候。Git会自动选择归并的方法。
C.子树策略:是Git另一种归并方法。(submodule)
为工程添加子模块:
cd demo_project
git submodule add git://github.com/felixge/node-mysql.git deps/mysql
git submodule init
git submodule update
git submodule init and update 就可以直接获取依赖模块了。
git submodule init
git submodule status
删除:
submodule的删除稍微麻烦点:首先,要在“.gitmodules”文件中删除相应配置信息。然后,执行“git rm –cached ”命令将子模块所在的文件从git中删除
下载的工程带有submodule:
当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令:
git submodule update --init --recursive
即可将子模块内容下载下来,工程才不会缺少相应的文件。
EX:团队成员通过 fork 负责人实现版本控制及代码同步
在负责人完成以上步骤之后,团队成员需要完成1-4步操作,获得自己的 SSH 密钥并配置完毕。
随后在负责人的项目页面点击 fork ,然后点击跳转页面的 Clone or Download 按钮,并复制其中地址。
来到工程的目录下,右键-->“Git Bash Here”;或者“菜单”-->“所有程序”-->“Git”-->“Git Bash”,输入工程目录“cd /e/Windows7_share/Qt5.5/project/myStyle”(这里替换为你自己的工程目录)
输入"git init"代码仓库就创建了,继续输入“ls -al”就可以看到目录下有个.git文件夹。
并输入刚才 GitHub 的 SSH 地址信息(git@github.com:fcxl9876/Drilling.git)(此处替换为你自己的SSH地址)
git remote add origin git@github.com:fcxl9876/Drilling.git
ex1:团队成员完成部分代码后的push操作
团队成员完成代码后,需要同步到GitHub时进行以下操作:
git add . (将改动添加到暂存区)
git commit -m "提交说明"
git push origin master (将本地更改推送到远程master分支)
如果在github的remote上已经有了文件,会出现错误。此时应当先pull一下,即:
git pull origin master
然后再进行:
git push-u origin master
之后在自己的仓库页面点击“New pull request”-“Create pull request”,如下图
之后需要等待负责人确认,即可完成上传。
ex2:团队成员获取Git仓库中最新代码的pull操作
登录自己的github账号,在fork的项目内点击“New pull request”:
将base fork改成自己github上fork后的项目,head fork改成原项目,如果base fork选择了自己fork完的项目后变成两个都是master,可以点一下“compare across forks”
点击“Create pull request”进入页面,填写信息后提交,然后点击“Merge pull request”合入代码
这时候回到自己github账号下fork的项目code下看commits可以看到原项目新提交的内容都已经合过来了.
这时候在本地Git执行
git pull origin master
就可以更新到最新的代码了。
本文参考资料较多,同时截图参杂本人截图以及网络截图,不便之处敬请谅解。
参考资料:
https://blog.csdn.net/baidu_33570760/article/details/74741430
https://www.cnblogs.com/eyunhua/p/8463200.html