Git

维基百科,自由的百科全书
跳转至: 导航搜索
Git
Git-logo.svg
Gitweb.png

gitweb,Git的一个Web界面。
原作者 林纳斯·托瓦兹
開發者 Junio Hamano林纳斯·托瓦兹
穩定版本 2.0.4[1] / 2014年7月30日;30小時前 (2014-07-30)
預覽版本 2.1.0-rc0[2] / 2014年7月27日;4天前 (2014-07-27)
编程语言 CBourne_shellPerl[3]
操作系统 POSIX, Windows
类型 版本控制
许可协议 GNU通用公共许可证第二版
網站 http://git-scm.com/

Git是一个分布式版本控制软件配置管理软件,原是Linux内核開發者林纳斯·托瓦兹(Linus Torvalds)为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools[4](一个类似Norton Commander界面的文件管理器)有所不同。

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

命名来源[编辑]

林纳斯·托瓦兹自嘲地取了這個名字“git”,读音为英语发音:/ɡɪt/[11]关于这个音频文件音频),在英國俚語中指一個愚笨或者不開心的人。[12]

I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.

Git的官方维基也給出了多種關於這個名字的解释。[13]

主要功能[编辑]

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

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

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

早期历史[编辑]

早期Linux的開發人員是使用BitKeeper来管理版本控制和维护程式碼。2005年的时候,开发BitKeeper的公司同Linux内核开源社区結束合作关系,並收回使用BitKeeper的權利。Torvalds开始着手开发Git来替代BitKeeper。

实现原理[编辑]

Git和其他版本控制系统(如CVS)有不少的差别,Git本身关心檔案的整体性是否有改變,但多數的CVS或Subversion系统則在乎檔案内容的差异。因此Git更像一個檔案系统,直接在本機上取得資料,不必連線到主机端获取資料。

庫結構[编辑]

  • hooks:存儲鉤子的文件夾
  • logs:存儲日誌的文件夾
  • refs:存儲指向各個分支的指針(SHA-1标识)文件
  • objects:存放git對象
  • config:存放各種設置文檔
  • HEAD:指向當前所在分支的指針文件路徑,一般指向refs下的某文件

移植性[编辑]

Windows平台上有msysgit與TortoiseGit可資利用。TortoiseGit還提供有GUI

现在git也提供windows版本下载。http://git-scm.com/download

使用[编辑]

使用Git的專案[编辑]

有不少的專案目前都使用Git:[15]

支持Git的源码存取服务[编辑]

以下是部分知名的支持Git的源码存取服务:

参考文献[编辑]

  1. ^ Hamano, Junio. Git v2.0.4 Release Notes. kernel mailing list. 2014-07-30 [2014-07-30]. 
  2. ^ Junio C Hamano. ANNOUNCE Git v2.1.0-rc0. [2014-07-27]. 
  3. ^ http://git.kernel.org/?p=git/git.git;a=tree
  4. ^ [1]
  5. ^ Linus Torvalds. Re: [ANNOUNCE Git wiki]. linux-kernel mailing list. 2006-05-05.  "Some historical background" on git's predecessors
  6. ^ Linus Torvalds. Re: Kernel SCM saga. linux-kernel mailing list. 2005-04-07. 
  7. ^ Linus Torvalds. Re: Kernel SCM saga. linux-kernel mailing list. 2005-04-08 [2008-02-20]. 
  8. ^ Linus Torvalds. Re: Errors GITtifying GCC and Binutils. git mailing list. 2006-03-23. 
  9. ^ Projects that use Git for their source code management. [2008-02-20]. 
  10. ^ OLPC wiki. Project hosting. [2008-02-20]. 
  11. ^ git - Definition and pronunciation. Oxford Learner's Dictionaries. 
  12. ^ After controversy, Torvalds begins work on git. InfoWorld. 2005-04-19 [2008-02-20]. ISSN 0199-6649. 
  13. ^ GitFaq: Why the 'git' name?
  14. ^ [2]
  15. ^ Projects that use Git for their source code management. [2008-02-20]. 
  16. ^ Getting Started/Sources/Amarok Git Tutorial - KDE TechBase
  17. ^ Using Repo and Git (Android Open Source Project)
  18. ^ BlueZ » GIT access
  19. ^ Btrfs source repositories - btrfs Wiki. Btrfs.wiki.kernel.org. [2009-06-15]. 
  20. ^ git.debian.org Git
  21. ^ digg.git - part 1 | Digg About
  22. ^ TypicalGitUsage - dragonflywiki
  23. ^ [3]
  24. ^ Download
  25. ^ Get FFmpeg. Ffmpeg.org. [2009-06-15]. 
  26. ^ Git - Fast Version Control System. [2010-04-24]. 
  27. ^ Lucas Rocha. Mailing List Announcement. [2009-03-19]. "GNOME to migrate to git version control system..." 
  28. ^ Git - GNOME Live!
  29. ^ gstreamer Wiki - GitDeveloperGuidelines
  30. ^ gthumb - GNOME Live!
  31. ^ GTK+ - Download
  32. ^ source repositories
  33. ^ Downloading jQuery - jQuery JavaScript Library
  34. ^ CCHIT's laika at master - GitHub
  35. ^ LilyPond, music notation for everyone
  36. ^ The Linux Mint Blog » Blog Archive » Mint to use Launchpad for translations, bugs, blueprints and github for code hosting and version control
  37. ^ LMMS - Linux MultiMedia Studio
  38. ^ Maemo - Gitorious
  39. ^ MeeGo - Gitorious
  40. ^ Ruby on Rails: Merb
  41. ^ MooTools - a compact javascript framework
  42. ^ OLPC wiki. Project hosting. [2008-02-20]. 
  43. ^ openSUSE - Gitorious
  44. ^ Léon Brocard. Mailing List Announcement. [2008-12-22]. "The Perl Foundation has migrated Perl 5 to the Git version control system..." 
  45. ^ PHP. PHP migrates to Git. PHP Group. 2012-03-20 [2012-03-20]. 
  46. ^ phpBB. phpBB moves source code versioning from Subversion to Git. phpBB Group. 2010-03-07 [2010-03-07]. 
  47. ^ Prototype JavaScript framework: Contribute
  48. ^ Qt now open for community contributions. 2009-05-11 [2009-06-22]. 
  49. ^ Reddit Goes Open Source. [2010-02-26]. 
  50. ^ "Rails is moving from SVN to Git". [2008-04-03]. 
  51. ^ Using Git for Samba Development - SambaWiki
  52. ^ SproutCore Documentation
  53. ^ Sugar Labs project hosting
  54. ^ Accessing SWI-Prolog source via <a href="http://git-scm.com/">GIT</a>
  55. ^ 55.0 55.1 Git - VideoLAN Wiki
  56. ^ GitWine - The Official Wine Wiki
  57. ^ Xiph Git
  58. ^ X.Org Wiki - Development/git
  59. ^ YUI 2 and YUI 3 Source Code Now on GitHub. [2009-01-20]. 

外部链接[编辑]