虽然平时大家都有听过Github,但这实际上要分为Git和Github,我们可以简单理解为前者是用于本地,后者是远程端。下面我们来看看一些基本的操作。
Github创建仓库
让我们先从Github开始,点击右边的绿色按钮new进入创建库界面:
如图,在填写仓库的名字以及描述,点击勾选完初始化仓库信息后,就可以创建这个仓库了。
可以看到,创建的仓库名为'exercise-code',包含了一个commit,这是我们在勾选初始化信息后自动生成的,文件后缀为md,表示文件为markdown格式;包含有一个branch,是master分支,即主分支;还有一个contributor,对项目的贡献者,也就是答主本身。
回到主页,我们可以看到三样东西:popular repositories 、contributions in the last year以及Contribution activity,分别代表的是受欢迎的仓库,每个仓库通过star的数量标榜受欢迎程度,会展示个人受欢迎前六名的仓库;贡献标记,小方块的颜色越深,贡献越多;贡献活动记录,记录你每次做了什么。
GitHub常用术语
-
repository:简称repo,可以理解为“仓库”,我们的项目就存放在仓库之中。也就是说,如果我们想要建立项目,就得先建立仓库;有多个项目,就建立多个仓库。
-
issue:可以理解为“问题”,举一个简单的例子,如果我们开源一个项目,如果别人看了我们的项目,并且发现了bug,或者感觉那个地方有待改进,他就可以给我们提出issue,等我们把issue解决之后,就可以把这些issue关闭;反之,我们也可以给他人提出issue。
-
fork:可以理解为“拉分支”,如果我们对某一个项目比较感兴趣,并且想在此基础之上开发新的功能,这时我们就可以fork这个项目,这表示复制一个完成相同的项目到我们的 GitHub 账号之中,而且独立于原项目。之后,我们就可以在自己复制的项目中进行开发了。
-
pull request:可以理解为“提交请求”,此功能是建立在fork之上的,如果我们fork了一个项目,对其进行了修改,而且感觉修改的还不错,我们就可以对原项目的拥有者提出一个pull请求,等其对我们的请求审核,并且通过审核之后,就可以把我们修改过的内容合并到原项目之中,这时我们就成了该项目的贡献者。
-
merge:可以理解为“合并”,如果别人fork了我们的项目,对其进行了修改,并且提出了pull请求,这时我们就可以对这个pull请求进行审核。如果这个pull请求的内容满足我们的要求,并且跟我们原有的项目没有冲突的话,就可以将其合并到我们的项目之中。当然,是否进行合并,由我们决定。
-
watch:可以理解为“观察”,如果我们watch了一个项目,之后,如果这个项目有了任何更新,我们都会在第一时候收到该项目的更新通知。
-
gist:如果我们没有项目可以开源或者只是单纯的想分享一些代码片段的话,我们就可以选择gist
Git和GitHub的绑定
在创建好仓库之后,如果我们想把我们的代码上传到GitHub上,如果只是单纯的保存到Git仓库里,在GitHub中我们是搜不到我们的项目的,所以我们需要通过SSH将两者绑定在一起。
在通过ssh公钥来授权之前,我们先打开Git-bash输入ssh来检查电脑中是否有安装ssh key。对于 Linux 和 Mac 系统,其是默认安装SSH的,而对于 Windows 系统,其默认是不安装 SSH 的,不过一般在安装了 Git Bash后,其也应该自带了 SSH. 可以通过在 Git Bash 中输入ssh命令,查看是否有安装。
如图,这就表示本机中已经安装有SSH了,接着我们输入ssh-keygen -t rsa 命令,表示我们指定 RSA 算法生成密钥,然后敲三次回车键,期间不需要输入密码,之后就会生成两个文件,分别为id_rsa 和id_rsa.pub,即密钥id_rsa 和公钥id_rsa.pub,两者都为隐藏文件,默认生成在以下目录:
-
Linux 系统:~/ .ssh
-
Mac 系统:~/ .ssh
-
Windows 系统:C: \Documents and Settings\username\\.ssh
-
Windows 10 ThinkPad: C:\Users\think\.ssh
密钥和公钥生成之后,通过cat ~/.ssh/id_rsa.pub 命令复制公钥,接着把公钥的内容添加到 GitHub,这样我们本地的密钥GitHub 上的公钥才可以进行匹配,授权成功后,就可以向 GitHub 提交代码了。
如图,我们点击右边的Setting进入界面,点击SSH and GPG key是,点击new SSH keys,将我们的公钥内容复制进去:
这里可以只复制内容,不用在title里输入内容,直接点击Add SSH keys 就可以完成Git和Github的交互了。
上传、下载代码
先打开项目,点击code,把项目地址复制好:
接着我们在我们需要上传的代码文件夹里进入Git Bash,正常来说第一次应该先输入git init进行初始化,由于答主已经初始化过了,所以没有进行这部操作。然后我们依次输入git add .(把该文件夹下的内容添加到仓库里);git commit -m "Initial commit"(提交更改到仓库内,引号里填写的是这次提交内容的备注);git remote add origin https://github.com/<username>/<repo>.git (添加GitHub仓库作为远程仓库,origion后面改为我们上面复制的仓库链接);git push -u origin master(将代码上传到仓库中,如果是第一次上传到GitHub,可能会提示你输入GitHub的用户名和密码),如下:
相比之下,要想在GitHub下载代码就简单多了,只需要点击download zip就可以了。
代码合并
在进行开发的过程中,我们很容易遇到合并代码的情况,例如我们从 master 分支拉取了一个 feature 分支,当我们开发到一段时间之后,可能需要将 master 的代码合并到我们当前的 feature 分支之中。而在这期间,很可能我们在两个分支都做了提交,那么这种情况该怎么操作呢?
如果使用git merge命令,假设我们在feature分支提交了三次commit,master则提交了两次,我们运行git merge --no-ff master,意思是把master的代码合并feature,--no-ff参数是为了保留mastercommit的提交记录。
如果使用rebase命令,即运行git rebase feature,就会把feature的代码合并到master分支处,注意,这里的合并跟之前的区别在于,以代码上commit的提交作为区分,合并后相当于是master先做了两次commit,再到feature做了三次commit。假如在合并的过程中,某个 commit 遇到了冲突,则需要我们先解决该冲突,然后才能继续进行合并操作,一般使用git add +冲突文件名将当前冲突标记为已解决,然后使用git rebase --continue命令继续合并操作。
以上就是使用Git和GitHub的一些基本操作,以后答主遇到一些刚需的命令和操作也会在这里进行补充更新。