使用github远程仓库进行代码版本控制

写在开始

已经开学第二周了,稍微的进入了一点状态,师兄们忙着修改论文准备毕业,时不时也需要我们的帮忙,主要是看一些论文格式(这时他们一定在后悔没有学会使用LaTeX排版)。这周我也完成了一个简单上位机软件的编写,基于Qt,功能包括下发和接收下位机的指令和数据、显示曲线、保存数据等。关于这个软件的记录我会在之后的文章详细介绍。在编写软件的地点有时是实验室,有时是宿舍,这就涉及到一个问题——两台电脑之间的代码同步。我选择的解决方案是使用github远程仓库进行同步。

安装git

git是用于本地管理版本的软件,它要求源码必须存储在本地,这也是使用github远程管理的基础,首先下载git,在此介绍的安装均是基于windows平台的。可以进入git的官网下载,选择对应的版本,最好选择国内的镜像源,这样下载速度会快很多,完成之后一路默认安装即可。安装完成之后再cmd下输入:

1
$ git

若无报错,即说明安装成功。

配置github

完成本地git的安装之后就可以在一台电脑上管理你的软件版本了,需要掌握git的使用方法,可以参考其它教程。git提供很多软件版本管理的功能,你可以更新你的软件版本,也可以撤销到之前的版本这对于软件的开发十分有用。本文的目的是解决多台电脑共同管理一份源码的操作,因此对于本地git不做过多介绍(其实我也没学全)。
想要实现远程的代码管理需要github或其它工具,github对于用户来说最友好,因此是不二之选,此外vsonline等工具也可以尝试一下,需要说明的是使用github管理源码如果是public库的话对于所有人都是可见的,你可以设为private,仅自己可见,但是需要付点费用。
首先在github官网注册一个账号,登陆之后点击settings、SSH and GPG keys 进入SSH keys 配置界面:

下一步是打开cmd,输入,其中xxx代表的是你的github账户的邮箱名和类型。

1
$ ssh-keygen -t rsa -C "xxx@xxx.com"

运行过程中全程enter即可,如果顺利,运行完成之后可以在c盘的用户\用户名目录下找到.ssh目录,这里面有两个文件id_rsa和id_rsa.pub,用记事本打开id_rsa.pub复制里面的全部内容备用。
回到github的ssh keys界面,点击New SSH key,添加一个新的key,在输入框中粘贴之前的复制内容即可完成一个新的SSH key添加。

完成了SSH key的配对之后就可以将本地的项目推到github远端了,你可以添加多个SSH key,每台电脑对应一个这样就可以多台电脑管理一个项目,一个账号貌似最多可以添加5个SSH key。

将本地项目推送到远端

在本地编写好的项目需要推送到远端时,需要新建一个空的文件夹,cmd下进入这个文件夹,然后输入:

1
$ git int

执行过后,在文件夹里会多出一个.git的文件夹(也可能会隐藏),千万不要随意改动。将项目源码全部拷贝到之前新建的文件夹中,以vs编写的c++项目为例,拷贝项目名称文件夹里的文件即可,注意不是包含解决方案的那一层。
本地工作完成后回到github,新建public仓库,名字自取。cmd进入git所在文件夹,输入:

1
$ git remote add origin git@github.com:username/repositoryname.git

这一步的目的是将本地库与远端仓库连接,其中username为你的github用户名,repositoryname为仓库名。之后就是将项目文件上传了,继续在cmd输入:

1
2
3
git add .
git commint -m "说明"
git push -u origin master

add.是指将项目所有文件上传、 git commint -m “说明”,””里面的内容是上传说明,git push -u origin master是将项目推送到主分支,第一次上传需要添加-u,之后的上传即可省略。这样就将本地项目推送到了远端,可以在github仓库中看到文件更新。

将远端仓库克隆到本地

在一台电脑上编写的程序推送到远端,前提是github已经添加新电脑对应的SSH key,更换电脑后需要先将仓库克隆到本地再进行修改,新建一个空的文件夹,cmd进入这个文件夹,输入一下代码,完成克隆。

1
git clone git@github.com:username/repositoryname.git

与上一小节一样,username是github用户名,repositoryname为仓库名,执行命令过后远端仓库里的文件就会出现在新电脑中的文件夹里。在新电脑修改程序后同样可以执行add,commit,push等命令将项目更新到远端。
在一台电脑更改程序,并更新到远端,在另外一台电脑上更新时,可以使用以下命令,将主分支的内容更新到本地。

1
git pull origin master

如果执行上述命令报错,可以添加辅助命令完成本地更新。

1
2
3
git stash
git pull origin master
git stash pop

vs项目与解决方案

使用vs建立的项目打开编辑时往往是打开一个.sln文件称为解决方案,通过github控制的是vs项目,且并没有上传解决方案。因此在IDE中修改编译时需要额外的操作。

新建vs项目,选择其他项目类型->visual studio解决方案->空白解决方案,这样就新建了一个什么都没有的解决方案。

在空白解决方案上右键选择添加现有项目,将远端仓库的.vcxproj文件添加到解决方案即可在IDE中修改、编译、运行。

总结与展望

github是一个很有用的学习工具,不仅可以用来管理自己的源码,更大的功能是学习别人的代码和编程思想,上面有很多有意思的项目,比如游戏王对战平台ygopro等。

接下来的日子可能会花很多时间在阅读文献上,但是coding不能停,我会继续记录这所剩无几的求学生涯中的宝贵经历,下篇文章打算继续做c++应用实例二。