[toc]

1. Introduction

​ Git和Github,就算没有用过,也或多或少有所耳闻,那么这两个东西究竟是干嘛的呢?

​ 首先,注意区分一下,Git与Github并不是一个东西,Git是由那位“Fuck Nvidia!”的Linus先生发明的一种分布式版本控制软件,而Github是一个通过Git进行版本控制的源码托管服务平台。它们都被用于版本控制(version control),所谓的版本控制,详细定义见版本控制,简单来讲就是软件开发过程中,需要不断更新与维护,出了bug,或者有一些新的想法,同时希望大家一起协作,又还想记录下每个版本的具体情况,这个时候就是在进行版本控制了,而Git是目前在版本控制方面普遍使用的一种工具。Git除了进行版本控制以外,还有一个特点就是方便大家合作,允许不同的用户同时对源码进行编辑。

2. Github

​ 申请账户等不在这里赘述,首先来明确一些Github上的概念。

  • **repository:**你可以把它理解为一个仓库,用来存放你的文件、源码等东西。
  • **commit:**类似于“save”,新建/更改文件之后,可以用这个保存更改。
  • **master:**类似于游戏中的主线任务。
  • **branch:**类似于游戏中的支线任务。支线并不改变主线,但可以合并到主线。不同的人来编辑就会形成不同的支线。引入这个功能,相当于是将repository的结构由线性结构拓展到了树状结构,是非常实用的一个功能。
  • **history:**可在该选项中,查看历史版本信息(修改信息)。
  • **insight:**可视化你的编辑信息,一般来说选择network可以很清楚地看到修改记录。
  • **pull request:**这里需要区别两个概念,push与pull,以master为主体,pull是把别人的东西收回来,push是将东西给别人。所以这儿的pull request就是将分支合并到master中去。比如你与其他人合作开发一个项目,每个人负责不一样的功能,完成之后利用pull request就可以合并到master主干上。
  • **fork:**watch是对该项目表示关注,star类似于点赞,fork则类似于将其他人的项目复制到了自己的仓库里,如果要编辑他人的项目,必须fork。
  • **issues:**在这里可以报漏洞以及提出新的关于项目的想法,issues只有项目维护者可以关闭。
  • **setting:**设置中有一些更高阶一点的玩法,比如利用github搭建网站等。

3. Git

​ 我是使用Git Bash来作为安装使用Git的工具,以下是一些Git的常用命令:

​ (1). 在安装完成后,可以 用此命令查看是否安装成功

git --version
//出现版本信息即安装成功

​ (2). 如果是要将其他人的项目从GitHub上下载到本地,可以使用此命令

git clone URL
//这是将整个库都下载下来了,如果只是下载git,可选择
git clone URL.git

​ 由于某些众所周知的原因,下载速度十分缓慢,充其量20多kb/s,如果有梯子的话,可以自己配置一下代理,下载速度有明显的提升。

#设置https代理
git config --global https.proxy http://127.0.0.1:8080
#设置http代理
git config --global http.proxy http://127.0.0.1:8080
#取消https代理
git config --global --unset https.proxy
#取消http代理
git config --global --unset http.proxy

​ 在你上传代码文件的时候,系统并不知道你是谁,为了有一个标识符,需要给本机设置一个用户名和邮箱地址。当然你也可以设置ssh来进行加密传输,具体方法这里不再阐述。

git config --global user.name "用户名"
git config --global user.email "邮箱地址"

​ 当你在本地编辑好代码后,可以通过Git传输到Github上,具体方法如下:

​ 首先初始化原始文件夹,这会在原文件夹中生成一个.git的隐藏文件。

git init

​ 然后将文件添加到本地仓库中。

git add .                     //添加当前文件夹下的所有文件
git add filename.c/.py/etc.   //添加当前文件夹下的某个特定文件

​ 输入本次的提交说明。

git commit -m "new update"          //引号中为提交内容说明
git commit -a -m "new update"       //也可以这样将所有文件提交

​ 关联到Github库。

//首先在github中新建一个库,并且复制库的地址,执行下列命令
git remote add origin URL
git push origin master

​ 还有一些常用且实用的Git命令,如git status、git log、git config等,这里有一篇文章可作为延伸阅读git命令