zoukankan      html  css  js  c++  java
  • 简单认识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的三个区:

  • 相关阅读:
    C++ const
    facebook hacker cup 2013资格赛第二题
    最大全1子矩阵
    java HashMap的keyset方法
    树状数组
    Java entry
    一个数学证明:1(1x1)(1x2)...(1xn)<=x1+x2+...+xn, xi在[0,1]
    传教士野蛮人过河问题python
    在cmd中为命令设置别名以及启动cmd时自动执行bat
    合取Λ,析取V,容易记混吗?
  • 原文地址:https://www.cnblogs.com/WillimTUrner/p/8422606.html
Copyright © 2011-2022 走看看