Git 是什么

子凡 2018-12-29 21:17:03
问答

Git 是一个分布式版本控制软件,与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。

git 是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于 2005 年以 GPL 发布。最初目的是为更好地管理 Linux 内核开发而设计。应注意的是,这与 GNU Interactive Tools 有所不同。 git 最初的开发动力来自于 BitKeeper 和 Monotone。

Git

git 最初的开发动力来自于 BitKeeper 和 Monotone。git 最初只是作为一个可以被其他前端(比如 Cogito 或 Stgit)包装的后端而开发的,但后来 git 内核已经成熟到可以独立地用作版本控制。很多著名的软件都使用 git 进行版本控制,其中包括 Linux 内核、X.Org 服务器和 OLPC 内核等项目的开发流程。

主要功能

git 是用于 Linux 内核开发的版本控制工具。与 CVS、Subversion 一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。git 的速度很快,这对于诸如 Linux 内核这样的大项目来说自然很重要。git 最为出色的是它的合并追踪(merge tracing)能力。

实际上内核开发团队决定开始开发和使用 git 来作为内核开发的版本控制系统的时候,世界上开源社群的反对声音不少,最大的理由是 git 太艰涩难懂,从 git 的内部工作机制来说,的确是这样。但是随着开发的深入,git 的正常使用都由一些友善的命令来执行,使 git 变得非常好用。现在,越来越多的著名项目采用 git 来管理项目开发,例如:wine、U-boot 等。

作为开源自由原教旨主义项目,git 没有对版本库的浏览和修改做任何的权限限制,通过其他工具也可以达到有限的权限控制,比如:gitosis、CodeBeamer MR。原本 git 的使用范围只适用于 Linux/Unix 平台,但在 Windows 平台下的使用也日渐成熟,这主要归功于 Cygwin、msysgit 环境,以及 TortoiseGit 这样易用的 GUI 工具。git 的源代码中也已经加入了对 Cygwin 与 MinGW 编译环境的支持且逐渐完善,为 Windows 用户带来福音。

实现原理

git 和其他版本控制系统(如 CVS)有不少的差别,git 本身关心文件的整体性是否有改变,但多数的版本控制系统如 CVS 或 Subversion 系统则在乎文件内容的差异。git 拒绝保持每个文件的版本修订关系。因此查看一个文件的历史需要遍历各个 history 快照;git 隐式处理文件更名,即同名文件默认为其前身,如果没有同名文件则在前一个版本中搜索具有类似内容的文件。

git 更像一个文件系统,直接在本机上获取数据,不必连线到主机端获取数据。 每个开发者都可有全部开发历史的本地副本,changes 从这种本地 repository 复制给其他开发者。这些 changes 作为新增的开发分支被导入,可以与本地开发分支合并。

分支是非常轻量级的,一个分支仅是对一个 commit 的引用。

git 是用 C 语言开发的,以追求最高的性能。git 自动完成垃圾回收,也可以用命令 git gc --prune 直接调用。

git 存储每个新创建的 object 作为一个单独文件。为了压缩存储空间占用, packs 操作把很多文件(启发式类似名字的文件往往具有类似内容)使用差分压缩入一个文件中(packfile),并创建一个对应的索引文件,指明 object 在 packfile 中的偏移值。新创建的对象仍然作为单独文件存在。repacks 操作非常费时间,git 会在空闲时间自动做此操作。也可用命令 git gc 来直接启动 repack。packfile 与索引文件都用 SHA-1 作为校验和并作为文件名。git fsck 命令做校验和的完整性验证。

Git 服务器典型的 TCP 监听端口为 9418。

好物推荐

如果你希望体验 Git 飞一般的速度,可以使用国内的代码托管与开发协作平台 —— Gitee(gitee.com)。除了访问速度更快以外,Gitee 还提供了免费的私有仓库供个人开发者使用。同时,Gitee 也有着国内数一数二的开源生态,这里有非常多的优秀开源项目和开发者,你可以在这里和他们无障碍地沟通交流,不管是找开源项目还是分享自己的开源项目,Gitee 都是极佳的选择。

Gitee

作为国内代码托管平台的佼佼者,目前已经有超过 500 万名开发者在 Gitee 上托管了 1000 余万个代码仓库,而其提供了研发管理、代码托管、文档管理服务的企业版的服务客户也超过了 10 万家。

0个人收藏 收藏

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • Gitee

    Gitee企业版是什么

    Gitee企业版是一站式企业级DevOps研发软件协作开发管理平台。支持公有云、私有化多种服务方式,通过高效、易用、敏捷的高并发工作流程,助力企业快速实现数字化转型,为业务创新提供有力支撑和持续驱。
  • Gitee Go

    Gitee Go是什么

    Gitee Go是Gitee全新推出的一款CICD工具,可提供持续集成、持续交付(部署)能力,帮助企业不断提升应用交付的质量和效率。通过构建自动化、测试自动化、部署自动化,完成从代码提交到应用交付的自动化。
  • 码云 Gitee

    Gitee和GitHub的区别是什么

    GitHub是全英文并且用户基数多,知名的库也多,而Gitee全是中文,而且大部分用户都是国人,优秀的库相对于GitHub也少,在国内访问Github偶尔会有不稳定情况,而Gitee不会出现不稳定情况。
  • TortoiseGit

    TortoiseGit是什么

    TortoiseGit 简称 tgit,中文名海龟Git,是TortoiseSVN的Git版本,TortoiseGit是一个Git版本控制客户端,只支持神器 Windows 系统。
  • 码云 gitee

    Gitee是什么

    码云(Gitee)是 OSCHINA 推出的代码托管协作开发平台,支持 Git 和 SVN,提供免费的私有仓库托管。2016 年推出企业版,提供企业级代码托管服务,成为开发领域领先的 SaaS 服务提供商。
  • 相机 camera

    Digital Zoom是什么

    数码变焦(Digital Zoom)是通过数码相机内的处理器,把图片内的每个像素面积增大,从而达到放大目的。这种手法如同用图像处理软件把图片的面积改大,不过程序在数码相机内进行。