简单认识Git与GitHub

Git的历史:

  创始人:linus  (linux之父)

  官网:https://git-scm.com/

很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

Git是什么?

  Git是一款免费开源的分布式版本控制系统,用于敏捷高校的处理任何或大或小的项目。

GitHub是什么?

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

 GitHub,于2008年4月10日正式上线,他为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括JQuery、PHP、Raby、Hadoop、HBase、SPark等......

Git于svn的对比: 

  1.Git是分布式的,svn是集中式的

  2.Git每个历史版本存储完整的文件,svn存储文件的差异

  3.Git可离线完成大部分的操作,svn则必须于中央服务器进行网络交互

  4.Git有着优雅的分支和合并功能、

  5.Git有着更强的撤销修改和修改版本历史的能力

  6.Git速度更快,效率更好

Git的基本命令

  1.帮助文档:git help

  2.查看Git所有安装的地方: which -a git

  3.查看git版本:git version

  4.填写用户名:git config --global user.name +用户名(自己起)

  5.填写邮箱:git config --global user.email +邮箱(必须是GitHub的邮箱)

  6.添加用户名:git config --global add user.name +用户名(自己起)

  7.获取当前属性:git config --get user.name

  8.获取所有属性:git config --list --global

  9.删除用户名:git config --global --unset user.name+指定删除的用户名

  10.当只有一个用户名的时候,可以不加指定用户名删除:git config --global --user.name

Git命令的基本使用:

  1.创建仓库:git init(在电脑文件夹里,会出现.git文件夹,隐藏的)

  2.创建文件夹:mkdir+文件夹名称

  3.创建文件:touch+文件名称+扩展名(后缀)

  4.查看当前版本库的状态:status

  5.使用git add命令告诉git,把文件添加到仓库(放到暂存区):git add + 文件名称

  6.使用git commit命令告诉git,把文件提交到仓库(放到历史区,本地仓库):commit -m ' 注释'

将文件提交到本地仓库需要两部:

  第一步:add

  第二部: commit

  1.对比文件内容:git diff +文件名称

  2.查看历史提交的记录:git log     ,出现的长串是:commit id(版本号)SHA-1 Hash计算出来的一个16进制

  3. 查看历史提交的记录(漂亮的在一行显示,指定某个文件了)不加文件名称则(全部显示) :log --pretty=oneline +文件名称

Git的基本操作:

  什么是版本库?

    英文名repository,又名仓库,可以简单理解一个目录,这个目录里面的所有文件都可以被Git管理

    1.创建版本库:git init

  版本回退:

    前提:知道当前版本是那个,HEAD表示当前版本

    回到上一个版本:HEAD^  一个^就表示前一个版本,如果N个前版本可以使用HEAD~N

    1.回退:git reset --hard HEAD^

    2.如果回退之后反悔了,又想回到之前的那个版本:git reset --hard +串码

    3.获取串码可以通过:git log +文件名称

    4.版本穿梭,可以使用 git log 查看提交历史,以便正确回退/穿梭到那个版本:git reset

    5.查看命令历史,以便确定回到过去/未来的那个版本:git reflog

  什么是修改:新增一行,修改几个字符,删除一行,新增文件,删除文件,Git管理的是修改,而不是文件

  撤销修改:

    1.没有提交到暂存区(其实就在工作区):git checkout --文件名

    2.已经提交到暂存区,分两步:

      第一步:git reset HEAD 文件名

      第二步:git checkout --文件名

  添加到暂存区/历史区(本地仓库):

    1.暂存区:git add +文件名

    2.历史区:git commit -m ' 注释'

    注意:文件只有从工作区先添加到暂存区,才能添加到历史区,因为只有暂存区的文件,才可以添加到历史区,工作区不生效

  删除文件:

    1.手误删除,如何恢复:git checkout --(文件名)

    2.真删除本库的文件(两步骤):

      第一步:git rm (想删除的文件名)

      第二部:git commit -m ' 注释'  

远程操作 

   第一种方法:

        在本地生成ssh

      输入命令 ssh -keyyen -t rsa -C 'GitHub邮箱号'回车再输入y(yes)继续一路回车,之后查看文件输命令:ls回车输入命令:ls-la回车查看隐藏文件,输入cd.ssh/回车查看cd目录,

      会出现id rsa (私钥),id -rsa.pub (公钥)再次输入命令:cat ssh -keygen -t rsa -C '邮箱号'回车再输入命令: cat id -rsa .pub(公钥)回车,会出现长串好几行,复制下来,然后打开GItHub,

      点击账号设置==》settings==》ssH and GPG keys==》New SSH key==》Titlec(自己命名)==》把复制的长串粘贴到key的框框里==》Add SSH key==》输入GitHub密码,这时候ssh已经和 

      GitHub交互了==》账号设置左边有个+号==》New repository(新建仓库)==》给库命名==》Create repository(创建)之后会出现框框,最上面点击SSH后找到带有push的框框,

      复制里面的命令,先去git执行第一条在执行第二条,再去GitHub刷新,会出现本地本地操作的记录,也就是说把本地仓库的文件已经成功的提交到GitHub上

     注意

        第一次提交就是输入第二次命令,命令里有-u,如果在本第修改后,再提交把-u去掉

     第二种方法:

       1.GitHub上创建远程库  2.使用命令 git clone 命令克隆远程库

      步骤:

       在GitHub上新建远程库,new reposcitory==》给库命名==》勾上最后一行(意思是初始化,创建一个文件)==》creade repository (创建)==》clone or down load ==》复制长串==》

       在git输入git clone+复制的长串,这时一个空的文件就出来了,操作就可以了,但是没有提交,要想提交,必须添加到暂存区==》历史区==》git push origin master==》去GitHub刷新,

       出现文件,成功提交。

      建议使用第二种

      

理解git的三个区:

 

posted on 2018-02-06 15:30  斯人已去犹忆影  阅读(325)  评论(1编辑  收藏  举报

导航