前序:
本文面对的是之前没有了解过git的同学,内容以科普为主~
正文开始:
只要是互联网公司,相信都会使用过svn,尤其传统行业,比如银行;
反过来问,svn是什么?度娘解释:
SVN是Subversion的简称,是一个开放源代码的版本控制系统;
就是用于多个人共同开发同一个项目,共用资源的目的;
复制代码
那是不是就SVN做管理工具就够了?答案很明显,非也;
现在越来越多公司都抛弃svn,改用git;
没错,git跟svn一样是版本控制工具,那svn到底有什么问题导致要用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貌似只能用命令了~希望能对各位起到帮助,多谢大家的支持~