GitHub是目前最流行的代码仓库,通过 Qt Creator 可以很方便的访问 GitHub ,因为项目需要故作此篇教程,以Windows系统为例简单介绍一下配置方法以及团队通过fork进行协作的方法。

1、下载并安装 git

首先安装 Git(msysGit) 最新版是2.18.0,下载地址 http://git-scm.com/downloads
下载Git

安装很简单,请按图操作
安装1
安装2
安装3
安装4
安装5
安装6
安装7

安装8

2、GitHub 注册

要托管到 GitHub ,那你就应该要有一个属于你自己的 GitHub 帐号,所以你应该先到https://github.com注册。
GitHub注册

3、在 Git 中设置用户名、邮箱

安装完成后,打开 Git Bash,设置用户名和邮箱,邮箱最好与github注册的邮箱一致,便于记忆。代码如下:

git config --global user.name "你自己的用户名"

git config --global user.email "你自己的邮箱"

配置完成后,我们可以再次输入,不包括名称,可以看到配置成功了
git配置

4、生成密钥并设置

生成密匙,注意参数大小写并且不要设置密码(直接回车)。

ssh-keygen -t rsa -C "你自己的邮箱"

生成后的公匙文件在 C:\Users\用户名.ssh\id_rsa.pub

打开密匙文件并复制其中内容将该密匙添加到github (Settings-> SSH and GPG keys-> new SSH key),然后添加公共密钥

配置密钥1
配置密钥2

为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

git推荐使用SSH协议的原因:
使用SSH协议可以避免每次push输入密码。前提是账户里配置好SSH密钥。git@github.com开头的就是SSH协议。使用Https协议则会导致每次都输入用户名和密码。

ex:以下5-6步为团队负责人或单人项目配置,其他成员操作在后面介绍。

5、在GitHub中新建一个库

新建库1
创建操作如图:
新建库2
创建成功后会出现设置提示信息界面,会看到如下类似内容:
新建库3

6、配置Qt Creator的git设置

在Qt Creator中打开工具/Tools-->选项/Options -->版本控制-->Git,在Prepend toPATH中设置Git的所在目录后确定并重启QtCreator。
Qt配置1
在Tools菜单就会看到Git项,选择 创建仓库... 添加一个仓库
Qt配置2
也可以使用Git命令完成仓库的新建:
来到工程的目录下,右键-->“Git Bash Here”;或者“菜单”-->“所有程序”-->“Git”-->“Git Bash”,输入工程目录“cd /e/Windows7_share/Qt5.5/project/myStyle”(这里替换为你自己的工程目录)
创建代码仓库1
创建代码仓库2

输入"git init"代码仓库就创建了,继续输入“ls -al”就可以看到目录下有个.git文件夹。
创建代码仓库3

并输入刚才 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中操作,如
Qt中操作

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 按钮,并复制其中地址。
SSH地址
来到工程的目录下,右键-->“Git Bash Here”;或者“菜单”-->“所有程序”-->“Git”-->“Git Bash”,输入工程目录“cd /e/Windows7_share/Qt5.5/project/myStyle”(这里替换为你自己的工程目录)
Git配置1
Git配置2
输入"git init"代码仓库就创建了,继续输入“ls -al”就可以看到目录下有个.git文件夹。
Git配置3
并输入刚才 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”,如下图
Pull1
Pull2
之后需要等待负责人确认,即可完成上传。

ex2:团队成员获取Git仓库中最新代码的pull操作
登录自己的github账号,在fork的项目内点击“New pull request”:
Pull1
将base fork改成自己github上fork后的项目,head fork改成原项目,如果base fork选择了自己fork完的项目后变成两个都是master,可以点一下“compare across forks”
Pull2
Pull3
点击“Create pull request”进入页面,填写信息后提交,然后点击“Merge pull request”合入代码
Pull4
这时候回到自己github账号下fork的项目code下看commits可以看到原项目新提交的内容都已经合过来了.
Pull5
这时候在本地Git执行

git pull origin master

就可以更新到最新的代码了。

本文参考资料较多,同时截图参杂本人截图以及网络截图,不便之处敬请谅解。

参考资料:

https://blog.csdn.net/baidu_33570760/article/details/74741430
https://www.cnblogs.com/eyunhua/p/8463200.html