zoukankan      html  css  js  c++  java
  • git整理(一)

    Git

    Git简介

    git是世界上最先进的分布式版本控制系统
    很多人都知道,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等等

    集中式和分布式比较

    集中式:代表(svn)所有人工作的时候代码版本都集中 放在中央服务器中,都由中央服务器进行版本管理。同时要求工作时必须联网,从中央服务器进行上传和下载。
    分布式:代表(git)分布式版本控制系统,没有中央服务器,每个人的电脑上都是一个完整的版本库。相比于集中式,分布式更加安全。当然分布式在公司中小组多个成员进行开发的时候,也需要有一台电脑充当中央服务器,但是他的作用不同于集中式的中央服务器,仅仅只作用于小组成员之间的“交换”。

    git:本地有与"中央仓库"一样的代码及历史记录的信息,一旦服务器有问题,那么找一个最新的本地代码同步上去后,之前所有的提交历史记录还可以看到。
    svn:所有人都将代码提交至“中央仓库”,一旦服务器有问题,就算找到一个最新的代码上去,也是只能以当前时间为节点作为新的项目去使用,之前所有的提交历史记录无法看到,对于处理历史遗留问题并不友好。

    Git本地仓库包含代码库还有历史库,在本地的环境开发就可以记录历史 而SVN的历史库存在于中央仓库,每次对比与提交代码都必须连接到中央仓库才能进行。
    这样的好处在于: 1、自己可以在脱机环境查看开发的版本历史 2、多人开发时如果充当中央仓库的Git仓库挂了,任何一个开发者的仓库都可以作为中央仓库进行服务(不过一般不会这样设置)

    Windows安装Git

    直接从官网下载,然后傻瓜式安装(最好不要有中文路径名)
    安装完成后打开Git Bash
    要在git上面输入本机使用的名字和邮箱地址,就类似与注册
    $ git config --global user.name "你注册的名字"
    $ git config --global user.email "你的邮箱地址"

    创建版本库

    所谓的版本库就是版本的仓库,repository,就类似于maven的仓库,,这个版本库里的所有文件都可以被git管理起来,对文件进行的读写操作,Git都可以跟踪

    方法一

    #创建一个文件夹
    $ mkdir learn1
    #进入刚创建的文件夹
    $ cd learn1
    #查看当前路径
    $ pwd
    /c/Users/Administrator/learn1
    #通过git init命令把这个目录变成git可以管理的仓库
    $ git init
    Initialized empty Git repository in C:/Users/Administrator/learngit/.git/

    方法二

    找到一个位置,鼠标右键点击Git Bash Here
    #创建一个文件夹
    $ mkdir learn2
    #此时刚点进入的位置就已经创建了一个learn2的文件夹
    #通过git init命令把这个目录变成git可以管理的仓库
    $ git init
    Initialized empty Git repository in C:/rep/.git/

    接下来就可以在里面写一些文件了,linux的指令也可以在这里使用


    往本地仓库中添加文件

    #把刚写好的文件传入到本地仓库中
    $ git add a.txt
    #没有显示错误说明成功
    #查看当前状态(可省略)
    $ git status
    On branch master

    No commits yet

    Changes to be committed:
    (use "git rm --cached <file>..." to unstage)
          new file:   a.txt
    #此时只是添加至stage 并没有提交到本地仓库
    #提交至本地库还需要commit一下
    $ git commit -m "第一次提交"
    [master (root-commit) 77c2b2c] 第一次提交
    1 file changed, 1 insertion(+)
    create mode 100644 learn2/a.txt
    #注意-m 后面一定要加备注信息,如果在公司中不加,可能挨熊
    #继续添加代码,提交就重复刚刚的步骤

     

  • 相关阅读:
    2个准则,解决人际、团队和客户问题
    系统思维
    如何看透他人行为背后的本质 | 思维模型02:行为分析模型
    提问比回答更有力量
    有了套路,为什么还是解决不了问题
    能够跨界成功的人
    正确的思考
    你的烦恼,全因为不会思考
    努力,到底是不是天赋
    我们是魔术师面前的观众吗
  • 原文地址:https://www.cnblogs.com/liudongshuai/p/11564741.html
Copyright © 2011-2022 走看看