在写这篇教程之前,我想说的话
作为一名机器人队老队员,我深知技术传承的困难和重要。 对于标准平台组来说,时间还会浪费在前人已经弄懂的API甚至是有关代码格式的问题上,这对我们去深入开发是非常不利的。 对于服务机器人组来说,更需要有一个代码托管,版本控制的系统来保证我们比赛所使用的工作空间可以继续被借鉴使用,从而越做越好。 但往往由于这些问题,我们无法安心地站在学长学姐的肩膀上继续前进,于是我推荐大家尽快入坑Github。 在描述具体操作之前,我看过了很多b站up主的视频,以及网上的各种github博客,并针对我们活动队的情况写下了此教程,如果各位同学耐心仔细研读,一定会有收获的。
1 了解Git和Github
Github是全球最大的社交编程和代码托管网站https://github.com/; Git是一个免费、开源的版本控制软件; Github这个代码托管平台借助Git来管理项目代码; 版本控制系统是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。
1.1 先了解几个基本概念
仓库(Repository) 仓库用来存放项目代码,每个项目对应一个仓库,多个开源项目则有多个仓库 收藏(Star) 收藏项目方便下次查看(对于github上的开源仓库,有一百个star已经非常非常厉害了) 复制克隆项目(Fork) 发起请求(Pull Request) 关注(Watch) 事务卡片(Issue)
1.2 github几个主页面介绍
1.2.1 如何进入各个主页
1.2.2 Github主页
1.2.3 仓库主页
1.2.4 个人主页
包含个人信息:头像,个人简介,关注我的人,我关注的人,我关注的git库,我的开源项目,我贡献的开源项目等信息
1.3 fork和pull request两个重要操作
这里不再赘述上几个图中的基本操作,挑两个重要的来说。
1.3.1 复制克隆项目(Fork)
情景:张三fork了李四的项目,相当于张三复制了李四的项目,所以自己也单独有了一个一样名称的仓库(注:该仓库会声明来自于李四,但是独立存在)
1.3.2 发起请求(Pull Request)
情景:张三修改了fork的项目中的文件,希望更新到原来的仓库,这时候他要新建一个pull request
1.3.3 开源项目贡献流程
1)新建Issue 提交使用问题或者建议或者想法 2)Pull Request 步骤: 1、 fork项目 2、 修改此时位于自己仓库的项目代码 3、 新建 pull request 4、 等待作者操作审核
2 Git的使用
2.1 首先学着创建一个新仓库
(我们用的ubuntu16.04或者18.04都自带git,不用安装) Git里面操作很多,这里面主要讲如何提交自己写的工程文件到自己的仓库Repository 此处介绍三种方法。 在介绍这三种方法之前,要学着创建一个新仓库
2.2 第一种:拖拽法
优点操作极其简单,缺点速度极慢,一般都会卡住。推荐有VPN的同学使用。
2.3 第二种:http上传(Git)(懒人推荐)
2.4 第三种:ssh上传(Git)(rsa加密)
- 我们需要先创建一个本地的版本库(其实也就是一个文件夹)。现在我通过命令行新建一个github_test文件夹,并且进入这个文件夹
2. 通过命令git init把这个文件夹变成Git可管理的仓库。这时你会发现github_test里面多了个.git文件夹,它是Git用来跟踪和管理版本库的。(ls –a可以查看隐藏文件) 3. 这时候你就可以把你的项目粘贴到这个本地Git仓库里面(粘贴后你可以通过git status来查看你当前的状态),然后通过git add把项目添加到仓库(或git add .把该目录下的所有文件添加到暂存区,注意点是用空格隔开的)。在这个过程中你其实可以一直使用git status来查看你当前的状态。 4. 用git commit把项目提交到本地仓库, -m后面引号里面是本次提交的注释内容 5. 由于本地Git仓库和Github仓库之间的传输是通过SSH加密的,所以连接时需要设置一下:创建SSH KEY。先看一下/home下有没有.ssh目录,有的话看下里面有没有id_rsa和id_rsa.pub这两个文件,有就跳到下一步,没有就通过下面命令创建
$ ssh-keygen -t rsa -C "youremail@example.com"
然后一路回车。这时你就会在/home下的.ssh目录里找到id_rsa和id_rsa.pub这两个文件 6. 登录Github,找到右上角的图标,打开点进里面的Settings,再选中里面的SSH and GPG KEYS,点击右上角的New SSH key,然后Title里面随便填,再把刚才id_rsa.pub里面的内容复制到Title下面的Key内容框里面,最后点击Add SSH key,这样就完成了SSH Key的加密。具体步骤也可看下面: 7. 现在我们就可以远程仓库和本地仓库进行关联了,可以在本地github_test仓库的命令行输入:
$ git remote add origin https://github.com/XJTU-Robocup/Robocup2019-China-Standard-Platform-League.git
注意origin后面加的是你Github上创建好的仓库的地址,如下图。 8. 关联好之后我们就可以把本地库的所有内容推送到远程仓库(也就是Github)上了,通过:
$ git push -u origin master
至此就完成了将本地项目上传到Github的整个过程 !!! 注意:另外,这里有个坑需要注意一下,就是在网页上创建新仓库的时候,如果你勾选了Initialize this repository with a README(就是创建仓库的时候自动给你创建一个README文件),那么到了第八步你将本地仓库内容推送到远程仓库的时候就会报错。这是由于你新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并以下:
$ git pull --rebase origin master
这时你再push就能成功了。 总结:其实只需要进行下面几步就能把本地项目加密上传到Github 1、在本地创建一个版本库(即文件夹),通过git init把它变成Git仓库; 2、把项目复制到这个文件夹里面,再通过git add .把项目添加到暂存区; 3、再通过git commit -m “注释内容”把项目提交到本地仓库; 4、在Github上设置好SSH密钥后,新建一个远程仓库,通过git remote add origin https://*******.git将本地仓库和远程仓库进行关联; 5、最后通过git push -u origin master把本地仓库的项目推送到远程仓库(也就是Github)上。(若新建远程仓库的时候自动创建了README文件会报错,解决办法看上面)。 注意:git使用https协议,每次pull, push都要输入密码,很麻烦。如果使用ssh密钥,可以省去每次都输密码,且只有第一次配置麻烦。
3. 最后
针对我们队情况的小白github快速上手指南就结束了,表扬大家的耐心学习!我们良好编程生态需要大家一起去创造维护,谢谢大家!