Qt Creator中包含了Git相关工具,为了更好地管理即将编写的项目的源代码,笔者决定配置好Git相关设置,过程中踩了一些坑,比如git push时出现Everything up-to-dateerror: src refspec master does not match any问题,Git GUI Here右键选项消失的问题。下面会详细说明所有的步骤,参考的文章有:文章一 文章二 文章三 Git右键菜单


准备

需要用到GitQt,笔者的版本是5.14,还有一个GitHub账号且创建好一个项目(repository),软件安装和GitHub创建的基本操作省略。

配置Git Bash秘钥

第一步要设置秘钥,对项目的每一次修改都应该有修改者的相关信息,所以要把秘钥设置好。打开Git Bash,方法有很多,可以ctrl+s调出搜索栏并输入git打开,这里的路径是用户的根目录,之后创建的.ssh文件夹也在该位置,如:

C:\Users\Administrator\

实际用户名往往不同,位置都是类似的。

比如邮箱和用户名分别为jianshu123456789@mail.com,则应分别输入以下两条指令:

git config --global user.name "jianshu"
git config --global user.email "123456789@mail.com"

检查设置是否正确,分别输入:

git config --global user.name
git config --global user.email

使用以下指令生成秘钥:

ssh-keygen -t rsa -C "123456789@mail.com"

打开C:\Users\Administrator\.ssh,打开id_rsa.pub并复制其中的秘钥内容。

添加本机秘钥

如图设置好SSH Keys,注意取名方便区分,比如xxx-PC,xxx-Laptop。

设置SSH秘钥.png

注意可以先到项目里复制好URL,在Qt Creator中要用到,建议做Git Clone时使用SSH的URL。

复制Repo的URL.png

Qt Creator中的设置

打开QT Creator并创建项目,菜单栏工具->选项打开选项窗口,版本控制->Git,配置Git的路径。我的Git Bash位置在C:\Program Files\Git\bin

设置Git路径.png

下面要对Git仓库进行初始化,这也是第一个坑,我们在做Qt项目时往往会专门创建一个文件夹放项目文件夹(包括源代码、Debug、Release),但往往这个文件夹和存放源代码的文件夹同名,实际初始化时要在后者中进行,如

E:\QtTest\Notepad\Notepad

可以手动打开该位置右键Git Bash Here、直接打开Git Bash并CD过去,或者在Qt Creator中工具->Git->创建仓库,以下是创建时用到的指令,分别输入(注意用到了之前复制的URL):

git init
git remote add origin https://github.com/Notepad/Notepad.git
git pull origin master --allow-unrelated-histories
git push --set-upstream origin master

至此会把初始化Repo创建的README.md等文件pull下来,但在push上传时遇到了第二个坑:Everything is up-to-date,直接Git push并没有效果,在网页上查看也没有任何变化,这是因为git不只是单单push一步完成,push前需要add、commit若干次,最后确认无误后才push。故:

git add .
git commit -m "提交信息"

或者用一条指令完成,其中提交信息用于标识本次commit做了什么。

git commit -am "提交信息"

最后push,从GitHub网页端检查是否有变化。

git push origin master

Qt Creator中的Git操作

配置好上面一切后,就可以在工具->Git处做一些常规的Git操作,不过标签tag等其他命令还是得进入命令行。

QT Creator中的Git操作.png

下载Pull:

工具->Git->Remote Repositories->push

上传Commit+Push(务必commit否则还会出现up-to-date或src refspec错误):

工具->Git->Local Repositories->commit
工具->Git->Remote Repositories->push

待整理其他git相关指令

git clone URL

git status -s

//分支管理

//创建分支
git branch branchName

//切换分支
git checkout branchName
//新建分支并切换到该分支 代替上面两条指令
git checkout -b branchName

//合并分支
git merge branchName
//合并常伴冲突 需要手动修改冲突的地方 再次提交(commit) 显示冲突
git diff

//删除分支
git branch -d branchName

//比如想为项目发布一个"1.0"版本。 我们可以用以下命令给最新一次提交打上"v1.0"的标签
git tag -a v1.0

//查看标签
git tag

//删除标签
git tag -d v1.1

//查看标签信息
git show v1.0

//查看提交历史 可以得到commit编号 追加标签
git log --decorate
//追加标签
git tag -a v0.9 85fc7e7