JB的git之旅-git介绍及GitHub配置教程

1,082 阅读7分钟

前序
本文面对的是之前没有了解过git的同学,内容以科普为主~

正文开始:

只要是互联网公司,相信都会使用过svn,尤其传统行业,比如银行;
反过来问,svn是什么?度娘解释:

SVN是Subversion的简称,是一个开放源代码的版本控制系统;
就是用于多个人共同开发同一个项目,共用资源的目的;

那是不是就SVN做管理工具就够了?答案很明显,非也;

现在越来越多公司都抛弃svn,改用git

没错,git跟svn一样是版本控制工具,那svn到底有什么问题导致要用git?

先一句话介绍git:
git是一款免费的、开源的分布式版本管理控制系统(工具)

那git跟svn的区别在哪里?

1)核心的区别
git是分布式,svn是集中式

使用过svn的同学都知道,是需要配置服务器地址的,这也说明svn必须要放到一个服务器上,所有操作都比较与服务器交互;
举例:研发从svn服务器获取最新版本的代码,然后修改,修改完成再把代码推送到svn服务器

那git呢?git是分布式的,没有中心服务器的概念,如果非要说,安装git后,自己电脑就是一个中心服务器,跟其他同学没有任何关联,即时自己电脑挂了,也不会影响到别人的工作,这点svn是做不到的,一旦svn挂了,所有用户都收到牵连~

2)联网问题: 使用svn是需要联网的,而git不需要联网

3)效率问题: svn下载速度比较慢,同一个代码仓库,git可以几十秒就可以了,但是svn可能要几分钟或者更长

4)工作流程: svn每次提交前都需要update,或者commit不会成功,如果出现冲突,就会被打断提交操作,谁先快提交就万事大吉,但是git没问题问题,有冲突直接处理就好~

Git的四个组成部分

还有很多很多区别,这里不多说明,可自行了解,总体来说,git更灵活,代码一般都从git,如果文档,可以考虑使用svn~各有各优势~

Git文件的几个状态

按大类划分,分为两种状态:
Tracked(已跟踪)和Untracked(未跟踪)
依据是:该文件是否已加入版本控制?

流程简述:

假设某个项目已加入版本控制系统
1.新建一个文件,该文件处于 Untracked 状态;
2.通过git add命令添加到缓存区,此时文件处于Tracked状态又或者说 
此时这个文件已经被版本控制系统所跟踪,而且他处于Staged(暂存)状态;
3.通过git commit命令把暂存区的文件提交提交到本地仓库,此时文件 
处于Unmodified(未修改)状态;
4.此时如果去编辑这个文件,文件又会变成Modified(修改)状态;

git安装

由于用的是win0 ,所以Linux跟Mac都是来自git官网的哈~

Windows
度娘直接有,但是当时找了半天,因此特意分享下,需要的同学拿走~ https://pan.baidu.com/s/1e-W5r6CY8lhfCsz75IJHsw         密码:gyj9

安装过程没有啥特别的,一直next就好了~

安装完毕后应该会有下面这几个图标,就说明安装成功啦~

这3个工具,一般常用的是git bash跟git gui,
git gui是一个图形界面的git项目管理工具,对于不想记命令的童鞋是一种福音~

Linux:
如果要在 Linux 上安装预编译好的 Git 二进制安装包,可以直接用系统提供的包管理工具。
在 Fedora 上用 yum 安装:

$ yum install git-core

在 Ubuntu 这类 Debian 体系的系统上,可以用 apt-get 安装:
$ apt-get install git

Mac
在 Mac 上安装 Git 有两种方式。
最容易的当属使用图形化的 Git 安装工具,下载地址在:

http://sourceforge.net/projects/git-osx-installer/

另一种是通过 MacPorts (http://www.macports.org) 安装。
如果已经装好了 MacPorts,用下面的命令安装 Git:

$ sudo port install git-core +svn +doc +bash_completion +gitweb

至此,git已经安装完毕了~

GitHub

GitHub是什么?

gitHub是一个面向开源及私有软件项目的托管平台,
因为只支持git 作为唯一的版本库格式进行托管

那GitHub跟git的关系有很明显,一个是版本控制工具,一个是用git做版本控制的项目托管平台;

GitHub的官网如下:https://github.com/
打开后自行注册,不清楚的就找度娘吧,这里不说明了~

注册完毕后,首先是创建仓库~

随便输入一个名称,点击create repository即可~

创建完毕后,会进入到仓库界面,会显示下面的内容,先不需要管,后面会用的上~

git跟github是怎么通信的?

本地Git仓库和GitHub仓库之间的传输是通过SSH加密传输的,
GitHub需要识别是否是你推送,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送,所以需要配置ssh key~

ssh key怎么获取?
还记得安装完后有一个Git bash软件吗?点击它~

ssh key是存放在.ssh目录的,那我们用Git bash输入命令创建ssh key:

$ ssh-keygen -t rsa -C "your_email@youremail.com"
//注意,双引号里面是你的邮箱。填你注册github的邮箱就行了。按enter执行。

一路回车就行,密码一般不用设置~

出现上图,就说明创建成功了,直接cd .ssh进入文件夹,看看目录下面有什么?

有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,
id_rsa是私钥,不能泄露,id_rsa.pub是公钥,可以公开。

配置ssh: 在git bash 执行 cat id_rsa.pub,把输出的内容copy出来,然后打开github网站,点击右上角自己的图标,点击Setting->ssh key 页面,点击add ssh key~

title随便写,key把刚刚copy的id_rsa.pub内容copy进去就行了~

添加完成后,会看到刚刚添加的key,可以添加多个key

验证是否成功 再次打开git bash,输入下面的命令:

ssh -T git@github.com

初次设置的话,会出现下面的结果,输入yes就行了~

完了吗?还没呢~既然都已经打通了,为什么不提交一次记录试试?

设置username和email 设置username和email,因为github每次commit都会记录他们

git config --global user.name "your name"     //你的github登录名
git config --global user.email "your_email@youremail.com"  //你的github邮箱

先把创库clone下载,打开git bash,挑一个你想存放项目的目录,比如在C盘新建一个test目录,然后进入到该目录下~

cd c:    //进入到C盘
mkdir test    //创建一个叫test的目录
cd test       //进入到test目录

注意,第一条git命令要来了~
仓库地址在哪里?打开github仓库首页,就能看到仓库地址了~
选择ssh,复制里面的内容~

在git bash 输入:

git clone 你的仓库地址(就是上面copy的内容)

别以为看到warn就以为不正常了,只是提示着是个空目录~

接下来就要本地创建文件,然后推动到服务端了,怎么做?
还记得在github上创建完仓库的那张图吗?赶紧翻翻,里面以后说明~

手把手按照上图操作就行了

 echo "# jbtest" >> README.md    //创建README.md文件
 git add README.md              //把README.md文件添加到暂存区
 git commit -m 'first commit'   //添加指定文件到暂存区
 git push origin master         //上传master分支到远程仓库

就这样,重新刷新github的页面,就能看到刚刚提交的内容啦~

这只是最简单的,正常情况还会涉及log查看,冲突处理,切换分支的概念,这里不细说,度娘能拯救你,如果有必要,会新开一篇来详细介绍~

git gui

也许有同学说,记不住命令,但是还是想用git怎么办?
Windows下提供Git gui软件,就是为了解决这个问题,让我们也有gui来模拟一次提交吧~

还是刚刚的项目,打开git gui软件~

因为我们是已经存在的项目,选择open existing repository打开刚刚的项目

打开后是这样的~

自己先手动打开README.md文件,用记事本就可以,随便输入点内容,点击保存即可~
然后回到git gui上~

点击下面的rescan按钮,左上角的unstaged changes原来是没有内容的,点击后就会把刚刚修改的文件及内容展示出来,如下~

然后点击rescan下的stage changed,点击后,文件就会移动到下面绿色的staged changes;

然后在commit message下输入内容,点击sign off,这些内容就是会上传的github的~

然后就点击commit,再点击push,会弹出一个框,因为目前只有master分支,直接点击push即可~

直接是绿色提示success,都代表成功了,如果有冲突之类的,就会标红并且把错误原因说明,修改后再次重复下面的操作即可~

打开github,刷新自己的项目,就会看到刚刚提示的信息了~

到最后,再引出一个东西,gitlab,是一款基于Git的项目管理软件,那跟github区别是?
GitLab拥有GitHub拥有的一切,但他拥有更多——让团队对它们的repositories拥有更多的控制,它的特色;
而gitlab的配置跟github是一样的,这里不多说明~

关于图形git工具选择:
Windows下推荐git 自带的git gui

mac的话,可以用SourceTree,
当然也支持Windows版本,官网下载地址:https://www.sourcetreeapp.com/

小结
本文主要介绍了git安装及与github配置、svn跟git的差异,以及最后引出gitlab,
对于不喜欢用命令的同学,Windows下可以用git gui来简化操作流程,Linux跟Mac貌似只能用命令了~希望能对各位起到帮助,多谢大家的支持~