git->软件

git[编辑]
维基百科,自由的百科全书


git

gitweb,git的一个Web界面。

原作者
林纳斯·托瓦兹

开发者
滨野纯林纳斯·托瓦兹

稳定版本
2.10.2[1]
(2016年10月28日,​27天前)

预览版本
2.10.0-rc2[2]
(2016年8月26日,​2个月前)

编程语言
CPerlsh[3]

操作系统
POSIX, Windows

类型
版本控制

许可协议
GNU通用公共许可证 第二版,GNU宽通用公共许可证 2.1版[4]

网站
http://git-scm.com/

git/ɡɪt/[5]

音频帮助·信息
)是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools[6]
(一个类似Norton Commander界面的文件管理器)有所不同。
git最初的开发动力来自于BitKeeperMonotone[7]
[8]
。git最初只是作为一个可以被其他前端(比如Cogito或Stgit[9]
)包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制[10]
。很多著名的软件都使用git进行版本控制[11]
,其中包括Linux内核X.Org服务器OLPC内核等项目的开发流程[12]

目录
[隐藏]
1命名来源
2历史2.1版本

3主要功能
4实现原理
5库结构
6移植性
7Git 指令参考7.1安装和配置
7.2获取和创建项目
7.3基本快照服务
7.4分支与合并
7.5共享和更新项目
7.6检查和比较
7.7修补
7.8调试
7.9电子邮件
7.10外部系统
7.11管理
7.12服务器管理
7.13管道指令

8使用8.1使用git的项目
8.2支持git的源码访问服务

9参考文献
10外部链接
11参见

命名来源[编辑]
林纳斯·托瓦兹自嘲地取了这个名字“git”,该词源自英国俚语,意思大约是“混账”。[13]
[14]


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

git的官方wiki也给出了多种关于这个名字的解释。[15]

历史[编辑]
自2002年开始,林纳斯·托瓦兹决定使用BitKeeper作为Linux内核主要的版本控制系统用以维护代码。因为BitKeeper为专有软件,这个决定在社区中长期遭受质疑。在Linux社区中,特别是理查德·斯托曼自由软件基金会的成员,主张应该使用开放源代码的软件来作为Linux核心的版本控制系统。林纳斯·托瓦兹曾考虑过采用现成软件作为版本控制系统(例如Monotone),但这些软件都存在一些问题,特别是性能不佳。现成的方案,如CVS的架构,受到林纳斯·托瓦兹的批评[16]

2005年,安德鲁·垂鸠写了一个简单程序,可以连接BitKeeper的存储库,BitKeeper著作权拥有者拉里·麦沃伊认为安德鲁·垂鸠对BitKeeper内部使用的协议进行逆向工程,决定收回无偿使用BitKeeper的授权。Linux内核开发团队与BitMover公司进行蹉商,但无法解决他们之间的歧见。林纳斯·托瓦兹决定自行开发版本控制系统替代BitKeeper,以十天的时间,编写出第一个git版本[17]
[18]

版本[编辑]
版本
原始发行日期
最新版本
发行日期

0.99
2005-07-11
0.99.9n
2005-12-15

1.0
2005-12-21
1.0.13
2006-01-27

1.1
2006-01-08
1.1.6
2006-01-30

1.2
2006-02-12
1.2.6
2006-04-08

1.3
2006-04-18
1.3.3
2006-05-16

1.4
2006-06-10
1.4.4.5
2008-07-16

1.5
2007-02-14
1.5.6.6
2008-12-17

1.6
2008-08-17
1.6.6.3
2010-12-15

1.7
2010-02-13
1.7.12.4
2012-10-17

1.8
2012-10-21
1.8.5.6
2014-12-17

1.9
2014-02-14
1.9.5
2014-12-17

2.0
2014-05-28
2.0.5
2014-12-17

2.1
2014-08-16
2.1.4
2014-12-17

2.2
2014-11-26
2.2.3
2015-09-04

2.3
2015-02-05
2.3.10
2015-09-29

2.4
2015-04-30
2.4.11
2016-03-17

2.5
2015-07-27
2.5.5
2016-03-17

2.6
2015-09-28
2.6.6
2016-03-17

2.7
2015-10-04
2.7.4
2016-03-17

2.8
2016-03-28
2.8.4
2016-06-06

2.9
2016-06-13
2.9.3
2016-08-12

2.10
2016-09-02
2.10
2016-09-02

格式:

旧版本

旧版本,仍被支持

当前版本

最新的预览版

主要功能[编辑]
git是用于Linux内核开发的版本控制工具。与CVSSubversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。git最为出色的是它的合并追踪(merge tracing)能力。
实际上内核开发团队决定开始开发和使用git来作为内核开发的版本控制系统的时候,世界上开源社区的反对声音不少,最大的理由是git太艰涩难懂,从git的内部工作机制来说,的确是这样。但是随着开发的深入,git的正常使用都由一些友善的命令稿来执行,使git变得非常好用。现在,越来越多的著名项目采用git来管理项目开发,例如:wineU-boot[19]

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

获取和创建项目[编辑]
init
clone

基本快照服务[编辑]
add
status
diff
commit
reset
rm
mv

分支与合并[编辑]
branch
checkout
merge
mergetool
log
stash
tag

共享和更新项目[编辑]
fetch
pull
push
remote
submodule

检查和比较[编辑]
show
log
diff
shortlog
describe

修补[编辑]
bisect
blame
grep

调试[编辑]
bisect
blame
grep

电子邮件[编辑]
am
apply
format-patch
send-email
request-pull

外部系统[编辑]
svn
fast-import

管理[编辑]
clean
gc
fsck
reflog
filter-branch
instaweb
archive
bundle

服务器管理[编辑]
daemon
update-server-info

管道指令[编辑]
cat-file
commit-tree
count-objects
diff-index
for-each-ref
hash-object
ls-files
merge-base
read-tree
rev-list
rev-parse
show-ref
symbolic-ref
update-index
update-ref
verify-pack
write-tree

使用[编辑]
使用git的项目[编辑]
有不少的项目目前都使用git:[20]

Amarok[21]

Android[22]

Arch Linux
Aquamacs Emacs
BlueZ[23]

Btrfs[24]

Clojure
CakePHP
Debian[25]

Digg[26]

DragonFly BSD[27]

Drupal[28]

Elinks[29]

Fedora
FFmpeg [30]

Freenet
git[31]

GIMP
GNOME[32]
[33]

GPM
GStreamer[34]

gThumb[35]

GTK+[36]

Hurd[37]

jQuery[38]

Laika (EHR testing framework)[39]

LilyPond (music typesetting)[40]

Linux kernel
Linux Mint[41]

LMMS Music Production Software [42]

Maemo[43]

MeeGo[44]

Merb[45]

MooTools[46]

One Laptop Per Child (OLPC)[47]

OpenFOAM
openSUSE[48]

Perl[49]

PHP[50]

phpBB[51]

PostgreSQL
Prototype.js[52]

Qt[53]

Reddit[54]

rsync
Ruby on Rails[55]

Samba[56]

SproutCore[57]

Sugar[58]

SWI-Prolog[59]

VLC[60]

Wine[61]

Xiph[62]

X.org Server[63]

x264[60]

YUI[64]

支持git的源码访问服务[编辑]
以下是部分知名的支持git的源码访问服务:
BerliOS
Beanstalk
Bitbucket
CodePlex
GitHub
gitorious
GNU Savannah
Google Code
JavaForge
Pikacode
SourceForge
git @ OSC
CSDN CODE
Coding
gitlab

参考文献[编辑]
^ Hamano, Junio. git v2.10.2 Release Notes. kernel. 2016-10-28 [2016-10-28].
^ Junio C Hamano. git v2.10.0-rc2. [2016-08-26].

^ http://git.kernel.org/?p=git/git.git;a=tree
^ git's LGPL license at github.com. github.com. 20 May 2011 [12 October 2014].

^ git - Definition and pronunciation. Oxford Learner's Dictionaries.

^ [1]
^ Linus Torvalds. [Re: ANNOUNCE git wiki]. linux-kernel. 2006-05-05. "Some historical background" on git's predecessors
^ Linus Torvalds. Re: Kernel SCM saga. linux-kernel. 2005-04-07.
^ Linus Torvalds. Re: Kernel SCM saga. linux-kernel. 2005-04-08 [2008-02-20].
^ Linus Torvalds. Re: Errors gittifying GCC and Binutils. git. 2006-03-23.
^ Projects that use git for their source code management. [2008-02-20].

^ OLPC wiki. Project hosting. [2008-02-20].

^ “a person, especially a man, who is stupid or unpleasant”(愚蠢或令人不爽的人,尤指男人)[2]
^ After controversy, Torvalds begins work on git. InfoWorld. 2005-04-19 [2008-02-20]. ISSN 0199-6649.

^ gitFaq: Why the 'git' name?
^ LinusTalk200705Transcript
^ Linux-Kernel Archive: Kernel SCM saga
^ 王立恒. Git十岁了!Git之父Linus Torvalds说古,大谈Git开发秘辛. iThome. 2015-04-10 [2016-05-10].

^ [3]
^ Projects that use git for their source code management. [2008-02-20].

^ Getting Started/Sources/Amarok git Tutorial - KDE TechBase
^ Using Repo and git (Android Open Source Project)
^ BlueZ » git access
^ Btrfs source repositories - btrfs Wiki. Btrfs.wiki.kernel.org. [2009-06-15].

^ git.debian.org git
^ digg.git - part 1 | Digg About
^ TypicalgitUsage - dragonflywiki
^ [4]
^ Download
^ Get FFmpeg. Ffmpeg.org. [2009-06-15].

^ git - Fast Version Control System. [2010-04-24].

^ Lucas Rocha. Mailing List Announcement. [2009-03-19]. GNOME to migrate to git version control system...

^ git - GNOME Live!
^ gstreamer Wiki - gitDeveloperGuidelines
^ gthumb - GNOME Live!
^ GTK+ - Download
^ source repositories
^ Downloading jQuery - jQuery JavaScript Library
^ CCHIT's laika at master - gitHub
^ LilyPond, music notation for everyone
^ The Linux Mint Blog » Blog Archive » Mint to use Launchpad for translations, bugs, blueprints and github for code hosting and version control
^ LMMS - Linux MultiMedia Studio
^ Maemo - gitorious
^ MeeGo - gitorious
^ Ruby on Rails: Merb
^ MooTools - a compact javascript framework
^ OLPC wiki. Project hosting. [2008-02-20].

^ openSUSE - gitorious (英语).

^ Léon Brocard. Mailing List Announcement. [2008-12-22]. The Perl Foundation has migrated Perl 5 to the git version control system...

^ PHP. PHP migrates to git. PHP Group. 2012-03-20 [2012-03-20].

^ phpBB. phpBB moves source code versioning from Subversion to git. phpBB Group. 2010-03-07 [2010-03-07].

^ Prototype JavaScript framework: Contribute
^ Qt now open for community contributions. 2009-05-11 [2009-06-22].

^ Reddit Goes Open Source. [2010-02-26].

^ "Rails is moving from SVN to git". [2008-04-03].

^ Using git for Samba Development - SambaWiki
^ SproutCore Documentation
^ Sugar Labs project hosting
^ Accessing SWI-Prolog source via <a href="http://git-scm.com/">git</a>
^ 60.0
60.1
git - VideoLAN Wiki
^ gitWine - The Official Wine Wiki
^ Xiph git
^ X.Org Wiki - Development/git
^ YUI 2 and YUI 3 Source Code Now on gitHub. [2009-01-20].

外部链接[编辑]
git官方网站(英文)
git快速入门(英文)
git Man Page(英文)
git用户手册(英文)
git Community Book(英文)
使用git管理源代码
git# (gitSharp)(英文)
GNU Interactive Tools
git从入门到精通P
连猴子都能懂的Git入门指南(繁体中文)

参见[编辑]


计算机程序设计主题


自由软件主题

分布式版本控制

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 193,968评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,682评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,254评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,074评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,964评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,055评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,484评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,170评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,433评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,512评论 2 308
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,296评论 1 325
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,184评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,545评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,150评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,437评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,630评论 2 335

推荐阅读更多精彩内容

  • iOS[编辑]维基百科,自由的百科全书 关于思科开发,用于网络装置的操作系统,请见“思科IOS”。 iOS 开发者...
    半片残枫阅读 2,154评论 1 1
  • git是一款开源分布式的版本控制系统,可以用于有效、高速地处理文件。 Git的功能特性: 从一般开发者的角度来说:...
    赴码爷阅读 966评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,490评论 18 139
  • 百位:389;十位:3578;个位:458;五码:34578;胆码:347;仅供参考!
    l宁静致远r阅读 362评论 0 2
  • 跟女儿看绘本《先有蛋》虽然这是一本讲颜色的书,但是女儿提出了一个很有质量的问题:“妈妈,为什么先有蛋呀?”这是人类...
    文姐28101阅读 180评论 2 3