Git

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

gitweb是Git的一个Web界面。
原作者 林纳斯·托瓦兹
開發者 Junio Hamano林纳斯·托瓦兹
穩定版本 1.8.2.2[1]/
2013年4月26日;27天前 (2013-04-26)
程式語言 CBourne_shellPerl[2]
作業系統 POSIX, Windows
類型 版本控制
許可協議 GNU通用公共许可证 版本二
網站 http://git-scm.com/

Git是一个分布式版本控制软件配置管理软件,原來是linux内核開發者林纳斯·托瓦兹(Linus Torvalds)为了更好地管理linux内核开发而创立的。需要注意的是和GNU Interactive Tools[3],一个类似Norton Commander界面的文件管理器有所不同。

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

目录

命名来源 [编辑]

林纳斯·托瓦兹自嘲地取了這個名字"git"。在英式英語中指一個愚笨或者不開心的人。[10]

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

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

主要功能 [编辑]

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

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

作为开源自由原教旨主义项目,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更像一個檔案系统,直接在本機上取得資料,不必連線到host端取資料回来。

庫結構 [编辑]

hooks 存儲鉤子的文件夾

logs 存儲日誌的文件夾

refs 存儲指向各個分支的指針(SHA-1标识)文件

objects 存放git對象

config 存放各種設置文檔

HEAD 指向當前所在分支的指針文件路徑,一般指向refs下的某文件

移植性 [编辑]

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

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

使用 [编辑]

使用Git的專案 [编辑]

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

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

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

参考文献 [编辑]

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

外部链接 [编辑]