1 <?xml version=
"1.0" encoding=
"iso-8859-1" ?>
2 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 <html xmlns=
"http://www.w3.org/1999/xhtml" xml:
lang=
"en">
6 <title>Git - Fast Version Control System
</title>
7 <meta name=
"description" content=
"Home of the Git Version Control System and Friends" />
8 <meta name=
"author" content=
"Petr Baudis" />
9 <meta http-equiv=
"reply-to" content=
"pasky@suse.cz" />
10 <meta http-equiv=
"content-language" content=
"en" />
11 <meta http-equiv=
"content-type" content=
"text/html; charset=iso-8859-1" />
12 <link type=
"text/css" rel=
"stylesheet" media=
"screen" href=
"stylesheets/screen.css" />
13 <link type=
"text/css" title=
"Default" rel=
"stylesheet" media=
"screen" href=
"stylesheets/screen-default.css" />
14 <link type=
"text/css" title=
"Gitweb Gray" rel=
"alternate stylesheet" media=
"screen" href=
"stylesheets/screen-gitweb-gray.css" />
15 <link type=
"text/css" title=
"Blue" rel=
"alternate stylesheet" media=
"screen" href=
"stylesheets/screen-blue.css" />
16 <link type=
"text/css" title=
"Green" rel=
"alternate stylesheet" media=
"screen" href=
"stylesheets/screen-green.css" />
17 <link rel=
"icon" href=
"favicon.png" type=
"image/png" />
22 <table border=
"1" summary=
"Navigation links" class=
"header" width=
"100%"><tr><td>
23 <a href=
"index.html" id=
"top"><img src=
"git-logo.png" width=
"72" height=
"27" alt=
"Git"
24 style=
"border-width:0px;"/></a>
25 <span class=
"hide">:
</span>
27 <a href=
"index.html">Home
</a> |
28 <a href=
"http://www.kernel.org/pub/software/scm/git/docs/">Documentation
</a> |
29 <a href=
"http://git.or.cz/gitwiki">Wiki
</a> |
30 <a href=
"http://www.kernel.org/pub/software/scm/git/">Download Site
</a> |
31 <a href=
"http://www.kernel.org/git/?p=git/git.git;a=summary">Git's Gitweb
</a>
35 <h1>Git - Fast Version Control System
</h1>
37 <div style=
"float: right"><table class=
"releases">
38 <tr align=
"center"><td>[
2006-
06-
10]
</td></tr>
39 <tr align=
"center"><td>The latest stable
<br />Git release is
<b>v1.4
.1</b>:
</td></tr>
40 <tr align=
"center"><td>
41 <a href=
"http://kernel.org/pub/software/scm/git/git-1.4.1.tar.bz2">tar.bz2
</a>
42 <a href=
"http://kernel.org/pub/software/scm/git/git-1.4.1.tar.bz2.sign">(sign)
</a><br />
43 <a href=
"http://kernel.org/pub/software/scm/git/git-1.4.1.tar.gz">tar.gz
</a>
44 <a href=
"http://kernel.org/pub/software/scm/git/git-1.4.1.tar.gz.sign">(sign)
</a><br />
46 <tr class=
"odd" align=
"center">
47 <td><a href=
"http://kernel.org/pub/software/scm/git/">More versions
</a></td>
51 <p>Git is popular version control system
52 designed to handle very large projects with speed and efficiency;
53 it is used mainly for various open source projects,
54 most notably the Linux kernel.
</p>
56 <p>Git falls in the category of distributed source code management tools,
57 similar to e.g. GNU Arch or Monotone (or BitKeeper in the commercial world).
58 Every Git working directory is a full-fledged repository with full revision
59 tracking capabilities, not dependent on network access or a central server.
</p>
61 <p>Git is an
<a href=
"http://www.opensource.org/">Open Source
</a> project covered by
62 the
<a href=
"http://www.gnu.org/licenses/gpl.txt">GNU General Public License
</a>.
63 It was originally written by Linus Torvalds and is currently maintained by
69 <div style=
"float: right"><table class=
"releases">
70 <tr><th>Git Crash Courses
</th></tr>
71 <tr><td align=
"center">
72 <a href=
"course/cvs.html">Git for CVS users
</a>
74 <br /><a href="course/svn.html">Git for SVN users</a>
75 <br /><a href="course/new.html">New to revision control?</a>
77 <br /><a href=
"course/stgit.html">Maintaining external patches
</a>
78 <br /><em>More to come soon...
</em>
83 <li><a href=
"#about">About Git
</a></li>
84 <li><a href=
"#documentation">Git Documentation
</a></li>
85 <li><a href=
"#download">Getting Git
</a></li>
86 <li><a href=
"#tools">Related Tools
</a></li>
87 <li><a href=
"#community">Community and Development
</a></li>
93 <h2 id=
"about">About Git
</h2>
95 <p>Git is distributed version control system focused on
96 speed, effectivity and real-world usability on large projects.
97 Its highlights include:
</p>
99 <!-- Heavily inspired by Wikipedia -->
104 <b>Strong support for non-linear development.
</b>
105 Git supports rapid and convenient branching and merging,
106 and includes powerful tools for visualizing
107 and navigating a non-linear development history.
111 <b>Distributed development.
</b>
112 Like BitKeeper and SVK, Git gives each developer
113 a local copy of the entire development history,
114 and changes are copied from one such repository to another.
115 These changes are imported as additional development branches,
116 and can be merged in the same way as a locally developed branch.
117 Repositories can be easily accessed via the efficient Git protocol
118 (optionally wrapped in ssh) or simply using HTTP - you can publish
119 your repository anywhere without
<em>any
</em> special webserver
120 configuration required.
124 <b>Efficient handling of large projects.
</b>
125 Git is very fast and scales well
126 even when working with large projects and long histories.
127 It is commonly an order of magnitude faster
128 than most other revision control systems,
129 and several orders of magnitude faster on some operations.
130 It also uses an extremely efficient packed format
131 for long-term revision storage
132 that currently tops any other open source version control system.
136 <b>Cryptographic authentication of history.
</b>
137 The Git history is stored in such a way
138 that the name of a particular revision (a
"commit" in Git terms)
139 depends upon the complete development history leading up to that commit.
140 Once it is published, it is not possible to change the old versions
141 without it being noticed. Also, tags can be cryptographically signed.
145 <b>Toolkit design.
</b>
146 Following the Unix tradition,
147 Git is a collection of many small tools written in C,
148 and a number of scripts that provide convenient wrappers.
149 It is easy to chain the components together to do other clever things.
154 <p>Besides providing a version control system,
155 the Git project provides a generic low-level toolkit
156 for tree history storage and directory content management.
157 Traditionally, the toolkit is called the
<em>plumbing
</em>.
158 Several other projects (so-called
<em>porcelains
</em>)
159 offer compatible version control interfaces - see the
160 <a href=
"#tools">related tools
</a> list.
</p>
162 <p>Some other projects have taken the concepts from the Git project
163 and are either porting an existing toolset to use the Git tools,
164 or reimplementing the concepts internally,
165 to benefit from the performance improvements.
167 <a href=
"http://darcs.net/DarcsWiki/DarcsGit">Darcs-git
</a>.
</li>
172 <h2 id=
"documentation">Git Documentation
</h2>
174 <p>You can find all the documentation bundled with the Git source code
175 in the
<code>Documentation/
</code> subdirectory. In addition, you can
176 also
<a href=
"http://www.kernel.org/pub/software/scm/git/docs/">read the web version
</a>
177 (corresponding to the latest Git development version).
</p>
179 <p>For a quick start, the
180 <a href=
"http://www.kernel.org/pub/software/scm/git/docs/tutorial.html">tutorial
</a>
181 covers the basics. See the
182 <a href=
"http://www.kernel.org/pub/software/scm/git/docs/everyday.html">Everyday Git
</a>
183 handbook for a useful minimum set of commands
184 depending on your style of Git usage.
186 <a href=
"http://linux.yyz.us/git-howto.html">Kernel Hacker's Git Tutorial
</a>
187 by Jeff Garzik may be useful.
</p>
189 <p>For a large and continuously growing resource of information
190 about Git, you can refer to the
<a href=
"http://git.or.cz/gitwiki">Git Wiki
</a>
191 - you are welcome to contribute!
</p>
196 <h2 id=
"download">Getting Git
</h2>
198 <p>The general download location for Git releases is
199 <a href=
"http://www.kernel.org/pub/software/scm/git/">http://www.kernel.org/pub/software/scm/git/
</a>.
200 You can also use one of many
<a href=
"http://www.kernel.org/mirrors/">kernel.org mirrors
</a>.
</p>
204 <p>For people who prefer precompiled packages, these are available:
</p>
206 <table class=
"bugmail">
209 <td colspan=
"2">RPMs
</td>
210 <td><a href=
"http://kernel.org/pub/software/scm/git/RPMS/">http://kernel.org/pub/software/scm/git/RPMS/
</a></td>
214 <td rowspan=
"3">Debs
</td>
216 <td><a href=
"http://www.backports.org/debian/pool/main/g/git-core/">http://www.backports.org/debian/pool/main/g/git-core/
</a></dd></td>
220 <td><a href=
"http://packages.debian.org/testing/devel/git-core">http://packages.debian.org/testing/devel/git-core
</a></td>
224 <td><a href=
"http://packages.debian.org/unstable/devel/git-core">http://packages.debian.org/unstable/devel/git-core
</a></td>
230 <h3>Development snapshots
</h3>
232 <p>Daily snapshots of the main Git development branch are available at
233 <a href=
"http://www.codemonkey.org.uk/projects/git-snapshots/git/"
234 >http://www.codemonkey.org.uk/projects/git-snapshots/git/
</a>
235 (thanks to Dave Jones).
</p>
237 <h3>Git over git
</h3>
239 <p>If you already have Git installed, you can get the latest
240 development version via Git itself:
241 <pre>git clone git://git.kernel.org/pub/scm/git/git.git
</pre>
244 <p>If you have problems connecting (Git uses port
9418),
245 you can try to access the repository over the HTTP protocol:
246 <pre>git clone http://git.kernel.org/pub/scm/git/git.git
</pre>
247 (this method is considerably slower but works even behind
251 <p>You can also always browse the current contents
252 of the git repository on web using the kernel.org
253 <a href=
"http://kernel.org/git/?p=git/git.git;a=summary">gitweb interface
</a>.
</p>
258 <h2 id=
"tools">Related Tools
</h2>
260 <p>Git is a true UNIX tool in the sense that it consists of many commands
261 that do one thing well. It has been designed from the start to be easily
262 wrapped in other tools and frontends. Currently, there are several
263 interfaces offering more comfortable Git usage, and also graphical
264 interfaces for browsing the history and more.
</p>
266 <p>Traditionally, the low-level part of Git is called
<em>plumbing
</em>
267 and the interfaces and frontends are called
<em>porcelains
</em>.
268 Git itself comes with a default porcelain bundled and that is actually
269 what you will normally mean when you say you use Git. However, there
270 are several alternative porcelains which might offer considerably more
271 user friendly interface or extend Git to perform some specialied tasks.
</p>
273 <h3>Version Control Interface layers
</h3>
277 <dt id=
"cogito">Cogito
</dt>
279 <a href=
"http://www.kernel.org/pub/software/scm/cogito/">Cogito
</a>
280 is the most popular version control system on top of Git.
281 It aims at seamless user interface and ease of use, providing
282 generally smoother user experience than the
"raw" Git interface
283 and indeed also many other version control systems.
</dd>
285 <dt id=
"stgit">StGIT
</dt>
286 <dd><a href=
"http://www.procode.org/stgit/">Stacked Git
</a> provides
287 a
<em>Quilt
</em>-like patch management functionality in the Git environment.
288 You can easily manage your patches in the scope of Git until they get
289 merged upstream.
</dd>
291 <dt id=
"pg">Patchy Git (pg)
</dt>
292 <dd><a href=
"http://www.spearce.org/category/projects/scm/pg/">Patchy Git
</a>
293 aims to help the user manage a set of patches on top of the current branch.
294 pg is somewhat like Quilt or StGIT,
295 but it does have a slightly different feature set.
</dd>
297 <dt id=
"hgct">(h)gct
</dt>
298 <dd><a href=
"http://www.cyd.liu.se/~freku045/gct/">(h)gct
</a> is
299 a GUI enabled commit tool. It has support for both Git and Mercurial.
</dd>
303 <h3>History Visualization
</h3>
307 <dt id=
"qgit">qgit
</dt>
308 <dd><a href=
"http://sourceforge.net/projects/qgit">qgit
</a> is a QT
309 GUI for browsing history of Git repositories, similar to
<em>gitk
</em>
310 (a simple GUI in TCL/TK distributed with stock Git)
311 but with more features.
</dd>
313 <dt id=
"gitweb">gitweb
</dt>
314 <dd><a href=
"ftp://ftp.kernel.org/pub/software/scm/gitweb/">gitweb
</a>
315 provides full-fledged
<a href=
"http://www.kernel.org/git/">web interface
</a>
316 for Git repositories.
</dd>
323 <h2 id=
"community">Community and Development
</h2>
325 <p>Git was initially written by Linus Torvalds
326 with help of a group of hackers 'round the net.
327 It is currently maintained by
330 <p>The user discussion and development of Git, Cogito and other tools related to Git
331 takes place on the Git mailing list - everyone is welcome to post to
332 <a href=
"mailto:git@vger.kernel.org">git@vger.kernel.org
</a>.
333 To
<a href=
"mailto:majordomo@vger.kernel.org?body=subscribe%20git">subscribe
</a>
334 to the list, send an email with just
"subscribe git" in the body to
335 majordomo@vger.kernel.org.
336 The mailing list archives are available at
337 <a href=
"http://marc.theaimsgroup.com/?l=git">http://marc.theaimsgroup.com/?l=git
</a>.
</p>
339 <p>You can also visit the IRC channel dedicated to Git -
340 meet us at
<a href=
"irc://irc.freenode.net/#git">#git at FreeNode
</a>.
</p>
342 <p>This website itself is tracked in Git as well -
344 <a href=
"http://pasky.or.cz/gitweb.cgi?p=git-homepage.git;a=summary">browse its development history
</a>
345 or even clone it from http://pasky.or.cz/~xpasky/git-homepage.git.
346 The site is covered by GPLv2
347 and maintained by
<a href=
"mailto:pasky@suse.cz">Petr Baudis
</a>
348 who always takes patches eagerly. ;-)
349 The web is based on a design by
<a href=
"mailto:fonseca@diku.dk">Jonas Fonseca
</a>
350 for the
<a href=
"http://elinks.cz">ELinks homepage
</a>.
</p>
357 This page is maintained by Petr Baudis. Please email me
358 at
<a href=
"mailto:pasky@suse.cz">pasky@suse.cz
</a>
359 with patches, suggestions and comments.