SlideShare uma empresa Scribd logo
1 de 14
Git 前世今生
             ---易超
        ganluo@aliyun.com




0
版本控制系统(VCS)的发展史




版本管理器的迚化

1            ALIBABA CONFIDENTIAL
版本系统-VCS的种类



    • 本地版本控制系统
    • 集中化的版本控制系统CVCS(SVN)
    • 分布式版本控制系统DVCS(Git、Mercurial 和
     Bazaar)




2                ALIBABA CONFIDENTIAL
DVCS 和集中式版本控制差异

    •   DVCS 和集中式版本控制系统之间有三个关键差异:

    •   1, DVCS 通 过本地提交支持离线工作.

    •   2, DVCS 比集中式系统更灵活,这种灵活性允许通过电子邮件.多种工作流的形式工作

    •   a,分布式,b,集中式


    •   3, DVCS 比集中式版本控制系统快.因为大多数操作在本机上进行。另外在需要进行推
        (push )操作(与另一个节点通信)时,速度也更快,因为两个客户机机器上 都有完
        整的元数据。速度差异相当显著,根据使用本地存储库还是网络存储库,DVCS 比
        Subversion 快 大约 3-10 倍。




3                       ALIBABA CONFIDENTIAL
集中式版本控制系统




4        ALIBABA CONFIDENTIAL
分布式版本系统




5        ALIBABA CONFIDENTIAL
版本控制的历史回顾—命令年代




    1, 最早的工具diff和patch linux 之父linus一直使用91-2002年

     diff: 命令是用于比较2个文件或目录的差异 .
        $ diff –u hello world >diff.txt 将hello 和world 2个文件在差异
    比 较结果保存到diff.txt中.

    Patch: 该命令相当于diff的反向操作。$patch world < diff.txt 还原world.


    2,早期的linux 就是用这2个工具维护的开发.




6                       ALIBABA CONFIDENTIAL
版本控制的历史回顾—客户端时代

    1,CVS : (Concurrent Versions System)诞生于1985年 荷兰阿姆斯特丹 VU 大学的

          Dick Grune 教授实现的,1989 年由 Brian Berliner 将 CVS 用 C 语言重写.

    •   当时 Dick Grune 和两个学生共同开发一个项目,但是三个人的工作时间无法
    •   协调到一起,迫切需要一个记录和协同代码开发的工具软件。于是Dick Grune 通过脚
        本语言对 RCS
    • (一个针对单独文件的多版本管理工具)进行封装,设计出有史以来第一个被大规模
        使用的版本控制工具。1986 年 Dick 通过新闻组发布了 CVS.
    • 合并困难,缺乏对原子的支持,不能优化存储内容相同但文件名不同的文件,因为在
        服务器端每个文件都是单独进行差异存储的.不能对文件和目录的重命名进行版本控制
    2, SVN:(Subversion)由 CollabNet 公司于 2000 年资助并发起开发,目的是创建一个更
    好用的版本控制系统以取代 CVS.

    •   SVN 在版本库授权上也有改进,不再像 CVS 那样依赖操作系统本身对版本库目录和
        文件进行授权,而是采用授权文件的方式来实现。

    •   SVN 还有一个创举,就是在工作区跟踪目录下(.svn 目录)为当前目录中的每一个文
        件都保存一份冗余的原始拷贝。这样做的好处是部分命令不再需要网络连接,例如文
        件修改的差异比较,以及错误更改的回退等.

7                          ALIBABA CONFIDENTIAL
Git 诞生

    •   1,git的发音:“歌易特” G字母发 GOD 音。

    •   2,什么是Git: 分布式版本控制系统,夸平台,linux MAC windows.

    •   3, 身世显赫:出自linux之父Linus伟大作品. 早期,Linus 顶着开源社区精英们的口诛笔
        伐,选择了一个商业版本控制系统 BitKeeper 作为 Linux 内核的代码管理工具。
    •   BitKeeper商业的,版权肯定不是自个的。。。。

    •   2005 年发生的一件事最终导致了 Git 的诞生 Samba 的作者,试图尝试对 BitKeeper
        反向工程,以开发一个能与 BitKeeper 交互的开源工具。商业软件公司,要求收回对
        Linux 社区免费使用 BitKeeper的授权,迫不得已, 最终Linus 选择了自己开发一个分
        布式版本控制工具以替代 BitKeeper.-----Git.

    •   Git 诞生大事记:
    •   2005年4月3日 开始开发 Git。
    •   2005 年 4 月 6 日,项目发布。
2005 年 4 月 7 日,Git 就可以作为自身的版本控制工具
        了。
2005 年 4 月 18 日,发生第一个多分支合并。
2005 年 4 月 29 日,Git 的性能就已经
        达到了 Linus 的预期。
2005 年 6 月 16 日,Linux 核心 2.6.12 发布,那时 Git 已经在维护
        Linux 核心的源代码


8                            ALIBABA CONFIDENTIAL
Git 安装


    •   1,linux下的安装:
    •   包管理器方式 :Git 软件包在有的 Linux 发行版中有些可能不叫
    •   git,而叫 git-core。这是因为有一款名为 GNU 交互工具1(GNU Interactive Tools)
        的 GNU 软件,在 Git 之前就在一些 Linux 发行版(Deian lenny)中占用了 git 的名称。
        为了以示区分,作为版本控制系统的 Git ,其软件包在这些平台就被命名为 git-core。
        因为作为版本控制系统的 Git太有名了,在后期的Linux 发行版的最新版本中,将 GNU
        Interactive Tools 软件包由 git改名为 gnuit,将 git-core 改名为 git。所以在下面介绍的
        在不同的 Linux 发行版中安装 Git 时,会看到有 git 和 git-core 两个
    •   ubuntu10.10 或是Debian(squeeze) 之后 更新版本:
    •   $ sudo aptitude install git
    •   $ sudo aptitude install git-doc git-svn git-email git-gui gitk
    •   Ubuntu 10.04(lucid)或更老的版本、Debian(lenny)或更老的版本:
    •   $ sudo aptitude install git-core
    •   $ sudo aptitude install git-doc git-svn git-email git-gui gitk
    •   RHEL、Fedora、CentOS:
    •   $ yum install git
    •   $ yum install git-svn git-email git-gui gitk




9                            ALIBABA CONFIDENTIAL
TortoiseGit 的安装和使用



     •   TortoiseGit 提供了 Git 和 Windows 资源管理器的整合,提供了 Git 的图形化操作
         界面。像其他 Tortoise 系列产品(TortoiseCVS、TortoiseSVN)一样,在资源管
         理器中显示的 Git 工作区目录和文件的图标附加了标识版本控制状态的图像,可以
         非常直观地看到哪些文件被更改了需要提交。通过扩展后的右键菜单,可以非常方
         便地在资源管理器中操作 Git 版本库.

     •   TortoiseGit 是对 msysGit 命令行的封装:因此需要先安装 msysGit

     •   msysGit : http://code.google.com/p/msysgit/

     •   TortoiseGit :http://code.google.com/p/tortoisegit/




10                                 ALIBABA CONFIDENTIAL
TortoiseGit 的安装和使用




11            ALIBABA CONFIDENTIAL
TortoiseGit 的安装和使用




12            ALIBABA CONFIDENTIAL
Git 前世今生




                      谢谢!

                2012-03-16




13              ALIBABA CONFIDENTIAL

Mais conteúdo relacionado

Mais procurados

使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率Zhen Li
 
Docker初识
Docker初识Docker初识
Docker初识hubugui
 
Linux二十周年 -致辞
Linux二十周年 -致辞Linux二十周年 -致辞
Linux二十周年 -致辞Wensong Zhang
 
Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器升煌 黃
 
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction家弘 周
 
Android 程式設計(4)
Android 程式設計(4)Android 程式設計(4)
Android 程式設計(4)Roy Wang
 
Docker home ted
Docker home tedDocker home ted
Docker home tedLayne Peng
 
Docker workshop
Docker workshopDocker workshop
Docker workshopWei Tung
 
cec-hello-docker
cec-hello-dockercec-hello-docker
cec-hello-dockerBruce Huang
 
Git & Sourcetree 介紹
Git & Sourcetree 介紹Git & Sourcetree 介紹
Git & Sourcetree 介紹Adison wu
 
寫給大家的 Git 教學
寫給大家的 Git 教學寫給大家的 Git 教學
寫給大家的 Git 教學littlebtc
 
Cloud Foundry Introduction
Cloud Foundry IntroductionCloud Foundry Introduction
Cloud Foundry Introduction家弘 周
 
Git 使用介绍
Git 使用介绍Git 使用介绍
Git 使用介绍medcl
 
Mercurial簡介與教學
Mercurial簡介與教學Mercurial簡介與教學
Mercurial簡介與教學芳本 林
 

Mais procurados (18)

Github簡介
Github簡介Github簡介
Github簡介
 
使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率
 
Docker初识
Docker初识Docker初识
Docker初识
 
Linux二十周年 -致辞
Linux二十周年 -致辞Linux二十周年 -致辞
Linux二十周年 -致辞
 
Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器
 
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction
 
Android 程式設計(4)
Android 程式設計(4)Android 程式設計(4)
Android 程式設計(4)
 
Docker home ted
Docker home tedDocker home ted
Docker home ted
 
Docker workshop
Docker workshopDocker workshop
Docker workshop
 
cec-hello-docker
cec-hello-dockercec-hello-docker
cec-hello-docker
 
Git & Sourcetree 介紹
Git & Sourcetree 介紹Git & Sourcetree 介紹
Git & Sourcetree 介紹
 
寫給大家的 Git 教學
寫給大家的 Git 教學寫給大家的 Git 教學
寫給大家的 Git 教學
 
Cloud Foundry Introduction
Cloud Foundry IntroductionCloud Foundry Introduction
Cloud Foundry Introduction
 
Git 使用介绍
Git 使用介绍Git 使用介绍
Git 使用介绍
 
Mercurial簡介與教學
Mercurial簡介與教學Mercurial簡介與教學
Mercurial簡介與教學
 
Git簡介
Git簡介Git簡介
Git簡介
 
Ovirt deep dive
Ovirt deep diveOvirt deep dive
Ovirt deep dive
 
Git 实战
Git 实战Git 实战
Git 实战
 

Semelhante a Git前世今生

Git 簡介(古時候的簡報備份)
Git 簡介(古時候的簡報備份)Git 簡介(古時候的簡報備份)
Git 簡介(古時候的簡報備份)Hsin-lin Cheng
 
Git 入门实战
Git 入门实战Git 入门实战
Git 入门实战icy leaf
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshellNelson Tai
 
Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀Wen-Tien Chang
 
Git入门与实践
Git入门与实践Git入门与实践
Git入门与实践LC2009
 
Github简介及实用入门
Github简介及实用入门Github简介及实用入门
Github简介及实用入门Rongxing Liu
 
First meetingwithgit
First meetingwithgitFirst meetingwithgit
First meetingwithgitRhythm Sun
 
Git與source tree 基礎教學
Git與source tree 基礎教學Git與source tree 基礎教學
Git與source tree 基礎教學Duncan Chen
 
Git+使用教程
Git+使用教程Git+使用教程
Git+使用教程gemron
 
工程師必備第一工具 - Git
工程師必備第一工具 - Git工程師必備第一工具 - Git
工程師必備第一工具 - GitAlan Tsai
 
Git 入門與實作
Git 入門與實作Git 入門與實作
Git 入門與實作奕浦 郭
 
Git and Github basic with SourceTree
Git and Github basic with SourceTreeGit and Github basic with SourceTree
Git and Github basic with SourceTreeChu-Siang Lai
 
[精华回顾]讲座:Linux及常用软件简介
[精华回顾]讲座:Linux及常用软件简介[精华回顾]讲座:Linux及常用软件简介
[精华回顾]讲座:Linux及常用软件简介NJU OPEN
 
Intro to Git 投影片
Intro to Git 投影片Intro to Git 投影片
Intro to Git 投影片Tony Yeh
 
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub維佋 唐
 
代码版本控制那点事
代码版本控制那点事代码版本控制那点事
代码版本控制那点事利鹏 宋
 
Git Flow 管理
Git Flow 管理Git Flow 管理
Git Flow 管理Pu Lee
 
Subversion
SubversionSubversion
Subversioni7Xh
 
Git & git flow
Git & git flowGit & git flow
Git & git flowAmo Wu
 

Semelhante a Git前世今生 (20)

Git 簡介(古時候的簡報備份)
Git 簡介(古時候的簡報備份)Git 簡介(古時候的簡報備份)
Git 簡介(古時候的簡報備份)
 
Git 入门实战
Git 入门实战Git 入门实战
Git 入门实战
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
 
Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
 
Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀
 
Git入门与实践
Git入门与实践Git入门与实践
Git入门与实践
 
Github简介及实用入门
Github简介及实用入门Github简介及实用入门
Github简介及实用入门
 
First meetingwithgit
First meetingwithgitFirst meetingwithgit
First meetingwithgit
 
Git與source tree 基礎教學
Git與source tree 基礎教學Git與source tree 基礎教學
Git與source tree 基礎教學
 
Git+使用教程
Git+使用教程Git+使用教程
Git+使用教程
 
工程師必備第一工具 - Git
工程師必備第一工具 - Git工程師必備第一工具 - Git
工程師必備第一工具 - Git
 
Git 入門與實作
Git 入門與實作Git 入門與實作
Git 入門與實作
 
Git and Github basic with SourceTree
Git and Github basic with SourceTreeGit and Github basic with SourceTree
Git and Github basic with SourceTree
 
[精华回顾]讲座:Linux及常用软件简介
[精华回顾]讲座:Linux及常用软件简介[精华回顾]讲座:Linux及常用软件简介
[精华回顾]讲座:Linux及常用软件简介
 
Intro to Git 投影片
Intro to Git 投影片Intro to Git 投影片
Intro to Git 投影片
 
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub
 
代码版本控制那点事
代码版本控制那点事代码版本控制那点事
代码版本控制那点事
 
Git Flow 管理
Git Flow 管理Git Flow 管理
Git Flow 管理
 
Subversion
SubversionSubversion
Subversion
 
Git & git flow
Git & git flowGit & git flow
Git & git flow
 

Git前世今生

  • 1. Git 前世今生 ---易超 ganluo@aliyun.com 0
  • 3. 版本系统-VCS的种类 • 本地版本控制系统 • 集中化的版本控制系统CVCS(SVN) • 分布式版本控制系统DVCS(Git、Mercurial 和 Bazaar) 2 ALIBABA CONFIDENTIAL
  • 4. DVCS 和集中式版本控制差异 • DVCS 和集中式版本控制系统之间有三个关键差异: • 1, DVCS 通 过本地提交支持离线工作. • 2, DVCS 比集中式系统更灵活,这种灵活性允许通过电子邮件.多种工作流的形式工作 • a,分布式,b,集中式 • 3, DVCS 比集中式版本控制系统快.因为大多数操作在本机上进行。另外在需要进行推 (push )操作(与另一个节点通信)时,速度也更快,因为两个客户机机器上 都有完 整的元数据。速度差异相当显著,根据使用本地存储库还是网络存储库,DVCS 比 Subversion 快 大约 3-10 倍。 3 ALIBABA CONFIDENTIAL
  • 5. 集中式版本控制系统 4 ALIBABA CONFIDENTIAL
  • 6. 分布式版本系统 5 ALIBABA CONFIDENTIAL
  • 7. 版本控制的历史回顾—命令年代 1, 最早的工具diff和patch linux 之父linus一直使用91-2002年 diff: 命令是用于比较2个文件或目录的差异 . $ diff –u hello world >diff.txt 将hello 和world 2个文件在差异 比 较结果保存到diff.txt中. Patch: 该命令相当于diff的反向操作。$patch world < diff.txt 还原world. 2,早期的linux 就是用这2个工具维护的开发. 6 ALIBABA CONFIDENTIAL
  • 8. 版本控制的历史回顾—客户端时代 1,CVS : (Concurrent Versions System)诞生于1985年 荷兰阿姆斯特丹 VU 大学的 Dick Grune 教授实现的,1989 年由 Brian Berliner 将 CVS 用 C 语言重写. • 当时 Dick Grune 和两个学生共同开发一个项目,但是三个人的工作时间无法 • 协调到一起,迫切需要一个记录和协同代码开发的工具软件。于是Dick Grune 通过脚 本语言对 RCS • (一个针对单独文件的多版本管理工具)进行封装,设计出有史以来第一个被大规模 使用的版本控制工具。1986 年 Dick 通过新闻组发布了 CVS. • 合并困难,缺乏对原子的支持,不能优化存储内容相同但文件名不同的文件,因为在 服务器端每个文件都是单独进行差异存储的.不能对文件和目录的重命名进行版本控制 2, SVN:(Subversion)由 CollabNet 公司于 2000 年资助并发起开发,目的是创建一个更 好用的版本控制系统以取代 CVS. • SVN 在版本库授权上也有改进,不再像 CVS 那样依赖操作系统本身对版本库目录和 文件进行授权,而是采用授权文件的方式来实现。 • SVN 还有一个创举,就是在工作区跟踪目录下(.svn 目录)为当前目录中的每一个文 件都保存一份冗余的原始拷贝。这样做的好处是部分命令不再需要网络连接,例如文 件修改的差异比较,以及错误更改的回退等. 7 ALIBABA CONFIDENTIAL
  • 9. Git 诞生 • 1,git的发音:“歌易特” G字母发 GOD 音。 • 2,什么是Git: 分布式版本控制系统,夸平台,linux MAC windows. • 3, 身世显赫:出自linux之父Linus伟大作品. 早期,Linus 顶着开源社区精英们的口诛笔 伐,选择了一个商业版本控制系统 BitKeeper 作为 Linux 内核的代码管理工具。 • BitKeeper商业的,版权肯定不是自个的。。。。 • 2005 年发生的一件事最终导致了 Git 的诞生 Samba 的作者,试图尝试对 BitKeeper 反向工程,以开发一个能与 BitKeeper 交互的开源工具。商业软件公司,要求收回对 Linux 社区免费使用 BitKeeper的授权,迫不得已, 最终Linus 选择了自己开发一个分 布式版本控制工具以替代 BitKeeper.-----Git. • Git 诞生大事记: • 2005年4月3日 开始开发 Git。 • 2005 年 4 月 6 日,项目发布。
2005 年 4 月 7 日,Git 就可以作为自身的版本控制工具 了。
2005 年 4 月 18 日,发生第一个多分支合并。
2005 年 4 月 29 日,Git 的性能就已经 达到了 Linus 的预期。
2005 年 6 月 16 日,Linux 核心 2.6.12 发布,那时 Git 已经在维护 Linux 核心的源代码 8 ALIBABA CONFIDENTIAL
  • 10. Git 安装 • 1,linux下的安装: • 包管理器方式 :Git 软件包在有的 Linux 发行版中有些可能不叫 • git,而叫 git-core。这是因为有一款名为 GNU 交互工具1(GNU Interactive Tools) 的 GNU 软件,在 Git 之前就在一些 Linux 发行版(Deian lenny)中占用了 git 的名称。 为了以示区分,作为版本控制系统的 Git ,其软件包在这些平台就被命名为 git-core。 因为作为版本控制系统的 Git太有名了,在后期的Linux 发行版的最新版本中,将 GNU Interactive Tools 软件包由 git改名为 gnuit,将 git-core 改名为 git。所以在下面介绍的 在不同的 Linux 发行版中安装 Git 时,会看到有 git 和 git-core 两个 • ubuntu10.10 或是Debian(squeeze) 之后 更新版本: • $ sudo aptitude install git • $ sudo aptitude install git-doc git-svn git-email git-gui gitk • Ubuntu 10.04(lucid)或更老的版本、Debian(lenny)或更老的版本: • $ sudo aptitude install git-core • $ sudo aptitude install git-doc git-svn git-email git-gui gitk • RHEL、Fedora、CentOS: • $ yum install git • $ yum install git-svn git-email git-gui gitk 9 ALIBABA CONFIDENTIAL
  • 11. TortoiseGit 的安装和使用 • TortoiseGit 提供了 Git 和 Windows 资源管理器的整合,提供了 Git 的图形化操作 界面。像其他 Tortoise 系列产品(TortoiseCVS、TortoiseSVN)一样,在资源管 理器中显示的 Git 工作区目录和文件的图标附加了标识版本控制状态的图像,可以 非常直观地看到哪些文件被更改了需要提交。通过扩展后的右键菜单,可以非常方 便地在资源管理器中操作 Git 版本库. • TortoiseGit 是对 msysGit 命令行的封装:因此需要先安装 msysGit • msysGit : http://code.google.com/p/msysgit/ • TortoiseGit :http://code.google.com/p/tortoisegit/ 10 ALIBABA CONFIDENTIAL
  • 12. TortoiseGit 的安装和使用 11 ALIBABA CONFIDENTIAL
  • 13. TortoiseGit 的安装和使用 12 ALIBABA CONFIDENTIAL
  • 14. Git 前世今生 谢谢! 2012-03-16 13 ALIBABA CONFIDENTIAL