一篇文章搞定git

git学习

一、背景(当成故事去读)

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

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

于是 Linus 选择了一个商业的版本控制系统 BitKeeper,BitKeeper 的东家 BitMover 公司出于人道主义精神,授权 Linux 社区免费使用这个版本控制系统。

开发 Samba 的 Andrew 试图破解 BitKeeper 的协议(这么干的其实也不只他一个),被 BitMover 公司发现了,于是 BitMover 公司收回 Linux 社区的免费使用权。

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

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

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

二、是什么?(定义/概念)

Git是目前世界上最先进的分布式版本控制系统(没有之一)。

  • 工作区(Working Directory

    就是你在电脑里能看到的目录,比如上文中的 gafish.github.com 文件夹就是一个工作区

  • 本地版本库(Local Repository

    工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

  • 暂存区(stage

    本地版本库里存了很多东西,其中最重要的就是称为 stage(或者叫index)的暂存区,还有 Git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针叫 HEAD

  • 远程版本库(Remote Repository

    一般指的是 Git 服务器上所对应的仓库,github`仓库就是一个远程版本库

  • 工作区暂存区本地版本库远程版本库之间几个常用的 Git 操作流程如下图所示:

  • 分支(Branch

    分支是为了将修改记录的整个流程分开存储,让分开的分支不受其它分支的影响,所以在同一个数据库里可以同时进行多个不同的修改

  • 主分支(Master

    前面提到过 masterGit 为我们自动创建的第一个分支,也叫主分支,其它分支开发完成后都要合并到 master

  • 标签(Tag

    标签是用于标记特定的点或提交的历史,通常会用来标记发布版本的名称或版本号(如:publish/0.0.1),虽然标签看起来有点像分支,但打上标签的提交是固定的,不能随意的改动,参见上图中的1.0 / 2.0 / 3.0

  • HEAD 指向的就是当前分支的最新提交

四、怎么样用?(方法)

  • git clone:从服务器拉取代码(克隆)
  • git config:配置开发者用户名和邮箱
  • git branch
    • git branch daily/0.0.0 : 创建分支
    • git branch -m daily/0.0.0 daily/0.0.1 :重命名分支
    • git branch :查看当前项目的分支列表
    • git branch -d daily/0.0.1:删除分支
  • git checkout:切换分支
  • git status:查看文件变动状态
  • git add:添加文件变动到暂存区
  • git commit :提交文件变动到版本库
  • git push:将本地的代码推送到服务器
  • git pull :将服务器上的最新代码拉取到本地
  • git log :查看版本提交记录
  • git tag:为项目标记里程碑

六、特点(优点、合同类型之间的区别)

  • 集中式(CVS、SVN)和分布式(Git)
 集中式版本控制系统:版本集中存放在中央服务器,使用的时候先down,改完再提交。(我之前也用SVN,没有网是没办法提交的,局域网效率还好,如果是外网而且网速还不好,那真是shei用shei知道!不要不要的!)

分布式版本控制系统:

        首先,分布式版本控制系统根本没有中央服务器,每个电脑上都是完整的版本,如果多人协作开发,只要推送各自的修改就行了。但是人多的话,一般还是会有一台充当中央服务器,单纯是为了方便大家修改。

        拥有一个强大的分支管理系统

七、git使用规范

阮一峰: http://www.ruanyifeng.com/blog/2015/08/git-use-process.html

八、git教程(很全很受用)

廖雪峰: https://www.liaoxuefeng.com/wiki/896043488029600/900062620154944

posted @ 2019-08-05 14:22  SweetLove  阅读(141)  评论(0编辑  收藏