前序:
本文面对的是以前没有了解过git的同窗,内容以科普为主~git
只要是互联网公司,相信都会使用过svn,尤为传统行业,好比银行;
反过来问,svn是什么?度娘解释:github
SVN是Subversion的简称,是一个开放源代码的版本控制系统;
就是用于多我的共同开发同一个项目,共用资源的目的;
复制代码
那是否是就SVN作管理工具就够了?答案很明显,非也;
如今愈来愈多公司都抛弃svn,改用git;
没错,git跟svn同样是版本控制工具,那svn到底有什么问题致使要用git?
web
1)核心的区别:
git是分布式,svn是集中式 缓存
使用过svn的同窗都知道,是须要配置服务器地址的,这也说明svn必需要放到一个服务器上,全部操做都比较与服务器交互;
举例:研发从svn服务器获取最新版本的代码,而后修改,修改完成再把代码推送到svn服务器bash
那git呢?git是分布式的,没有中心服务器的概念,若是非要说,安装git后,本身电脑就是一个中心服务器,跟其余同窗没有任何关联,即时本身电脑挂了,也不会影响到别人的工做,这点svn是作不到的,一旦svn挂了,全部用户都收到牵连~服务器
2)联网问题: 使用svn是须要联网的,而git不须要联网app
3)效率问题: svn下载速度比较慢,同一个代码仓库,git能够几十秒就能够了,可是svn可能要几分钟或者更长ssh
4)工做流程: svn每次提交前都须要update,或者commit不会成功,若是出现冲突,就会被打断提交操做,谁先快提交就万事大吉,可是git没问题问题,有冲突直接处理就好~分布式
还有不少不少区别,这里很少说明,可自行了解,整体来讲,git更灵活,代码通常都从git,若是文档,能够考虑使用svn~各有各优点~svn
按大类划分,分为两种状态:
Tracked(已跟踪)和Untracked(未跟踪),
依据是:该文件是否已加入版本控制?
流程简述:
假设某个项目已加入版本控制系统
1.新建一个文件,该文件处于 Untracked 状态;
2.经过git add命令添加到缓存区,此时文件处于Tracked状态又或者说
此时这个文件已经被版本控制系统所跟踪,并且他处于Staged(暂存)状态;
3.经过git commit命令把暂存区的文件提交提交到本地仓库,此时文件
处于Unmodified(未修改)状态;
4.此时若是去编辑这个文件,文件又会变成Modified(修改)状态;
复制代码
因为用的是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是一个面向开源及私有软件项目的托管平台,
由于只支持git 做为惟一的版本库格式进行托管
复制代码
那GitHub跟git的关系有很明显,一个是版本控制工具,一个是用git作版本控制的项目托管平台;
GitHub的官网以下:https://github.com/
打开后自行注册,不清楚的就找度娘吧,这里不说明了~
注册完毕后,首先是建立仓库~
随便输入一个名称,点击create repository便可~
建立完毕后,会进入到仓库界面,会显示下面的内容,先不须要管,后面会用的上~
本地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怎么办?
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貌似只能用命令了~但愿能对各位起到帮助,多谢你们的支持~