blob: 470fdc5ecd5609dc4f05c54b8aea53f6de292e4a [file] [log] [blame]
Junio C Hamanof7c042d2008-06-06 22:50:531git(1)
Junio C Hamano1a4e8412005-12-27 08:17:232======
3
4NAME
5----
6git - the stupid content tracker
7
8
9SYNOPSIS
10--------
Junio C Hamano6b2cee12006-08-26 08:43:3111[verse]
Junio C Hamanob4a9ede2009-04-08 07:36:3212'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
Junio C Hamanocae86272007-08-21 02:20:4913 [-p|--paginate|--no-pager]
Junio C Hamanod526ba92007-07-02 00:17:4214 [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
15 [--help] COMMAND [ARGS]
Junio C Hamano1a4e8412005-12-27 08:17:2316
17DESCRIPTION
18-----------
Junio C Hamanoe27fb932006-04-03 05:34:1019Git is a fast, scalable, distributed revision control system with an
20unusually rich command set that provides both high-level operations
21and full access to internals.
22
Junio C Hamanofce7c7e2008-07-02 03:06:3823See linkgit:gittutorial[7] to get started, then see
Junio C Hamanoe27fb932006-04-03 05:34:1024link:everyday.html[Everyday Git] for a useful minimum set of commands, and
25"man git-commandname" for documentation of each command. CVS users may
Junio C Hamanofce7c7e2008-07-02 03:06:3826also want to read linkgit:gitcvs-migration[7]. See
27the link:user-manual.html[Git User's Manual] for a more in-depth
Junio C Hamano3d30fd52007-05-08 00:32:5328introduction.
Junio C Hamano1a4e8412005-12-27 08:17:2329
Junio C Hamano33db4372006-06-07 19:51:4530The COMMAND is either a name of a Git command (see below) or an alias
Junio C Hamano35738e82008-01-07 07:55:4631as defined in the configuration file (see linkgit:git-config[1]).
Junio C Hamano33db4372006-06-07 19:51:4532
Junio C Hamanob63afff2007-05-01 03:05:5533Formatted and hyperlinked version of the latest git
34documentation can be viewed at
35`http://www.kernel.org/pub/software/scm/git/docs/`.
36
Junio C Hamano9d52e572007-02-13 23:48:2037ifdef::stalenotes[]
38[NOTE]
39============
Junio C Hamano9d52e572007-02-13 23:48:2040
Junio C Hamanoa9b8d242007-05-19 04:51:5541You are reading the documentation for the latest (possibly
42unreleased) version of git, that is available from 'master'
43branch of the `git.git` repository.
44Documentation for older releases are available here:
Junio C Hamano2fc92602007-03-29 01:09:4645
Junio C Hamano98e32c32009-04-13 02:39:5346* link:v1.6.2.3/git.html[documentation for release 1.6.2.3]
Junio C Hamanoa9eca4e2009-03-04 08:29:5947
48* release notes for
Junio C Hamano98e32c32009-04-13 02:39:5349 link:RelNotes-1.6.2.3.txt[1.6.2.3],
50 link:RelNotes-1.6.2.2.txt[1.6.2.2],
Junio C Hamano064b4ab2009-03-15 22:16:1551 link:RelNotes-1.6.2.1.txt[1.6.2.1],
Junio C Hamanoa9eca4e2009-03-04 08:29:5952 link:RelNotes-1.6.2.txt[1.6.2].
53
Junio C Hamanoe5bf6c12009-02-07 21:43:1054* link:v1.6.1.3/git.html[documentation for release 1.6.1.3]
Junio C Hamano13016de2008-12-25 05:46:5755
56* release notes for
Junio C Hamanoe5bf6c12009-02-07 21:43:1057 link:RelNotes-1.6.1.3.txt[1.6.1.3],
58 link:RelNotes-1.6.1.2.txt[1.6.1.2],
Junio C Hamano20d47e32009-01-26 06:36:0259 link:RelNotes-1.6.1.1.txt[1.6.1.1],
Junio C Hamano13016de2008-12-25 05:46:5760 link:RelNotes-1.6.1.txt[1.6.1].
61
Junio C Hamano54bf1e22008-12-20 06:30:1162* link:v1.6.0.6/git.html[documentation for release 1.6.0.6]
Junio C Hamanoc6e59502008-08-17 21:05:5163
64* release notes for
Junio C Hamano54bf1e22008-12-20 06:30:1165 link:RelNotes-1.6.0.6.txt[1.6.0.6],
Junio C Hamanob4028862008-12-08 02:03:4966 link:RelNotes-1.6.0.5.txt[1.6.0.5],
Junio C Hamano9bd39c42008-11-13 01:54:4467 link:RelNotes-1.6.0.4.txt[1.6.0.4],
68 link:RelNotes-1.6.0.3.txt[1.6.0.3],
Junio C Hamano675570c2008-09-13 06:07:2869 link:RelNotes-1.6.0.2.txt[1.6.0.2],
70 link:RelNotes-1.6.0.1.txt[1.6.0.1],
Junio C Hamanoc6e59502008-08-17 21:05:5171 link:RelNotes-1.6.0.txt[1.6.0].
72
Junio C Hamano54bf1e22008-12-20 06:30:1173* link:v1.5.6.6/git.html[documentation for release 1.5.6.6]
Junio C Hamano11fe55c2008-06-18 23:14:5674
75* release notes for
Junio C Hamano54bf1e22008-12-20 06:30:1176 link:RelNotes-1.5.6.6.txt[1.5.6.6],
Junio C Hamanob53db3c2008-08-07 00:17:5277 link:RelNotes-1.5.6.5.txt[1.5.6.5],
Junio C Hamano915cd9b2008-07-20 01:24:1778 link:RelNotes-1.5.6.4.txt[1.5.6.4],
79 link:RelNotes-1.5.6.3.txt[1.5.6.3],
80 link:RelNotes-1.5.6.2.txt[1.5.6.2],
81 link:RelNotes-1.5.6.1.txt[1.5.6.1],
Junio C Hamano9eb57532008-06-26 06:33:4682 link:RelNotes-1.5.6.txt[1.5.6].
Junio C Hamano11fe55c2008-06-18 23:14:5683
Junio C Hamano54bf1e22008-12-20 06:30:1184* link:v1.5.5.6/git.html[documentation for release 1.5.5.6]
Junio C Hamano0d0679d2008-04-08 06:15:4685
86* release notes for
Junio C Hamano54bf1e22008-12-20 06:30:1187 link:RelNotes-1.5.5.6.txt[1.5.5.6],
88 link:RelNotes-1.5.5.5.txt[1.5.5.5],
Junio C Hamanoe2b205c2008-06-08 01:43:4489 link:RelNotes-1.5.5.4.txt[1.5.5.4],
Junio C Hamano99b28f22008-05-28 08:07:2690 link:RelNotes-1.5.5.3.txt[1.5.5.3],
Junio C Hamanob7a77fa2008-05-26 07:20:0191 link:RelNotes-1.5.5.2.txt[1.5.5.2],
Junio C Hamanoe3ddb5b2008-04-21 00:48:0792 link:RelNotes-1.5.5.1.txt[1.5.5.1],
Junio C Hamano0d0679d2008-04-08 06:15:4693 link:RelNotes-1.5.5.txt[1.5.5].
94
Junio C Hamano54bf1e22008-12-20 06:30:1195* link:v1.5.4.7/git.html[documentation for release 1.5.4.7]
Junio C Hamano7b9b4262008-02-02 06:48:3996
97* release notes for
Junio C Hamano54bf1e22008-12-20 06:30:1198 link:RelNotes-1.5.4.7.txt[1.5.4.7],
99 link:RelNotes-1.5.4.6.txt[1.5.4.6],
Junio C Hamano56033be2008-03-28 06:12:53100 link:RelNotes-1.5.4.5.txt[1.5.4.5],
Junio C Hamanobb343172008-03-09 10:39:09101 link:RelNotes-1.5.4.4.txt[1.5.4.4],
Junio C Hamanocb174dd2008-02-23 21:03:54102 link:RelNotes-1.5.4.3.txt[1.5.4.3],
Junio C Hamanoe670d0d2008-02-17 20:14:59103 link:RelNotes-1.5.4.2.txt[1.5.4.2],
Junio C Hamanoefe3c632008-02-14 00:51:31104 link:RelNotes-1.5.4.1.txt[1.5.4.1],
Junio C Hamano7b9b4262008-02-02 06:48:39105 link:RelNotes-1.5.4.txt[1.5.4].
106
Junio C Hamano4e272312008-01-08 09:13:21107* link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
Junio C Hamanoa75069c2007-09-04 01:19:24108
109* release notes for
Junio C Hamano4e272312008-01-08 09:13:21110 link:RelNotes-1.5.3.8.txt[1.5.3.8],
Junio C Hamano976c0c42007-12-01 21:57:14111 link:RelNotes-1.5.3.7.txt[1.5.3.7],
Junio C Hamanoe1258662007-11-19 05:03:19112 link:RelNotes-1.5.3.6.txt[1.5.3.6],
Junio C Hamano1c708832007-11-02 02:47:50113 link:RelNotes-1.5.3.5.txt[1.5.3.5],
Junio C Hamanoea719cf2007-10-04 13:06:35114 link:RelNotes-1.5.3.4.txt[1.5.3.4],
Junio C Hamano58992c92007-10-01 16:23:18115 link:RelNotes-1.5.3.3.txt[1.5.3.3],
Junio C Hamano199cdf12007-09-19 18:30:47116 link:RelNotes-1.5.3.2.txt[1.5.3.2],
Junio C Hamano61210dd2007-10-24 11:52:13117 link:RelNotes-1.5.3.1.txt[1.5.3.1],
118 link:RelNotes-1.5.3.txt[1.5.3].
Junio C Hamano75485c82007-05-19 04:20:33119
Junio C Hamano9eb57532008-06-26 06:33:46120* link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
121
Junio C Hamanoed7f4f62007-05-20 09:09:09122* release notes for
Junio C Hamano3b178be2007-08-16 04:59:27123 link:RelNotes-1.5.2.5.txt[1.5.2.5],
Junio C Hamano235d53f2007-07-13 00:25:15124 link:RelNotes-1.5.2.4.txt[1.5.2.4],
Junio C Hamano1d90cb02007-07-03 07:05:31125 link:RelNotes-1.5.2.3.txt[1.5.2.3],
Junio C Hamano29b1b922007-06-16 16:30:26126 link:RelNotes-1.5.2.2.txt[1.5.2.2],
127 link:RelNotes-1.5.2.1.txt[1.5.2.1],
Junio C Hamanoed7f4f62007-05-20 09:09:09128 link:RelNotes-1.5.2.txt[1.5.2].
129
130* link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
131
132* release notes for
133 link:RelNotes-1.5.1.6.txt[1.5.1.6],
134 link:RelNotes-1.5.1.5.txt[1.5.1.5],
Junio C Hamanoa9b8d242007-05-19 04:51:55135 link:RelNotes-1.5.1.4.txt[1.5.1.4],
136 link:RelNotes-1.5.1.3.txt[1.5.1.3],
137 link:RelNotes-1.5.1.2.txt[1.5.1.2],
138 link:RelNotes-1.5.1.1.txt[1.5.1.1],
139 link:RelNotes-1.5.1.txt[1.5.1].
Junio C Hamano91d44c52007-05-09 07:16:07140
Junio C Hamanoa9b8d242007-05-19 04:51:55141* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
Junio C Hamano91d44c52007-05-09 07:16:07142
Junio C Hamanoed7f4f62007-05-20 09:09:09143* release notes for
144 link:RelNotes-1.5.0.7.txt[1.5.0.7],
Junio C Hamanoa9b8d242007-05-19 04:51:55145 link:RelNotes-1.5.0.6.txt[1.5.0.6],
146 link:RelNotes-1.5.0.5.txt[1.5.0.5],
147 link:RelNotes-1.5.0.3.txt[1.5.0.3],
148 link:RelNotes-1.5.0.2.txt[1.5.0.2],
149 link:RelNotes-1.5.0.1.txt[1.5.0.1],
150 link:RelNotes-1.5.0.txt[1.5.0].
Junio C Hamanoe90436a2007-04-22 07:22:13151
Junio C Hamanoa9b8d242007-05-19 04:51:55152* documentation for release link:v1.4.4.4/git.html[1.4.4.4],
153 link:v1.3.3/git.html[1.3.3],
154 link:v1.2.6/git.html[1.2.6],
155 link:v1.0.13/git.html[1.0.13].
Junio C Hamano9d52e572007-02-13 23:48:20156
157============
158
159endif::stalenotes[]
160
Junio C Hamano1a4e8412005-12-27 08:17:23161OPTIONS
162-------
163--version::
Junio C Hamano01078922006-03-10 00:31:47164Prints the git suite version that the 'git' program came from.
Junio C Hamano1a4e8412005-12-27 08:17:23165
166--help::
Junio C Hamano01078922006-03-10 00:31:47167Prints the synopsis and a list of the most commonly used
Junio C Hamano58256872007-12-04 08:31:13168commands. If the option '--all' or '-a' is given then all
169available commands are printed. If a git command is named this
170option will bring up the manual page for that command.
Junio C Hamano0c0da5f2007-12-13 02:45:30171+
172Other options are available to control how the manual page is
Junio C Hamano35738e82008-01-07 07:55:46173displayed. See linkgit:git-help[1] for more information,
Junio C Hamanoba4b9282008-07-06 05:20:31174because `git --help ...` is converted internally into `git
175help ...`.
Junio C Hamano1a4e8412005-12-27 08:17:23176
177--exec-path::
Junio C Hamano01078922006-03-10 00:31:47178Path to wherever your core git programs are installed.
Junio C Hamano1a4e8412005-12-27 08:17:23179This can also be controlled by setting the GIT_EXEC_PATH
Junio C Hamanoba4b9282008-07-06 05:20:31180environment variable. If no path is given, 'git' will print
Junio C Hamano1a4e8412005-12-27 08:17:23181the current setting and then exit.
182
Junio C Hamanob4a9ede2009-04-08 07:36:32183--html-path::
184Print the path to wherever your git HTML documentation is installed
185and exit.
186
Junio C Hamanoeb415992008-06-08 22:49:47187-p::
188--paginate::
Junio C Hamanof870ef82006-07-29 09:10:13189Pipe all output into 'less' (or if set, $PAGER).
190
Junio C Hamanocae86272007-08-21 02:20:49191--no-pager::
192Do not pipe git output into a pager.
193
Junio C Hamanof870ef82006-07-29 09:10:13194--git-dir=<path>::
195Set the path to the repository. This can also be controlled by
Junio C Hamano7d575a52008-04-30 08:45:27196setting the GIT_DIR environment variable. It can be an absolute
197path or relative path to current working directory.
Junio C Hamanof870ef82006-07-29 09:10:13198
Junio C Hamanod526ba92007-07-02 00:17:42199--work-tree=<path>::
200Set the path to the working tree. The value will not be
201used in combination with repositories found automatically in
202a .git directory (i.e. $GIT_DIR is not set).
203This can also be controlled by setting the GIT_WORK_TREE
204environment variable and the core.worktree configuration
Junio C Hamano7d575a52008-04-30 08:45:27205variable. It can be an absolute path or relative path to
206the directory specified by --git-dir or GIT_DIR.
207Note: If --git-dir or GIT_DIR are specified but none of
208--work-tree, GIT_WORK_TREE and core.worktree is specified,
209the current working directory is regarded as the top directory
210of your working tree.
Junio C Hamanod526ba92007-07-02 00:17:42211
Junio C Hamanof870ef82006-07-29 09:10:13212--bare::
Junio C Hamanoc435b1c2007-08-28 06:25:35213Treat the repository as a bare repository. If GIT_DIR
214environment is not set, it is set to the current working
215directory.
216
Junio C Hamano1a4e8412005-12-27 08:17:23217
Junio C Hamanoe27fb932006-04-03 05:34:10218FURTHER DOCUMENTATION
219---------------------
Junio C Hamano1a4e8412005-12-27 08:17:23220
Junio C Hamanoe27fb932006-04-03 05:34:10221See the references above to get started using git. The following is
222probably more detail than necessary for a first-time user.
Junio C Hamano1a4e8412005-12-27 08:17:23223
Junio C Hamano597ffcf2007-09-17 17:33:15224The link:user-manual.html#git-concepts[git concepts chapter of the
Junio C Hamanofce7c7e2008-07-02 03:06:38225user-manual] and linkgit:gitcore-tutorial[7] both provide
Junio C Hamano597ffcf2007-09-17 17:33:15226introductions to the underlying git architecture.
Junio C Hamano1a4e8412005-12-27 08:17:23227
Junio C Hamanoe27fb932006-04-03 05:34:10228See also the link:howto-index.html[howto] documents for some useful
229examples.
Junio C Hamano1a4e8412005-12-27 08:17:23230
Junio C Hamanofce7c7e2008-07-02 03:06:38231The internals are documented in the
232link:technical/api-index.html[GIT API documentation].
Junio C Hamano3dac5042007-12-15 08:40:54233
Junio C Hamanoe27fb932006-04-03 05:34:10234GIT COMMANDS
235------------
Junio C Hamano1a4e8412005-12-27 08:17:23236
Junio C Hamanoe27fb932006-04-03 05:34:10237We divide git into high level ("porcelain") commands and low level
238("plumbing") commands.
Junio C Hamano1a4e8412005-12-27 08:17:23239
Junio C Hamanob19b4f02006-10-29 20:47:22240High-level commands (porcelain)
241-------------------------------
242
243We separate the porcelain commands into the main commands and some
244ancillary user utilities.
245
246Main porcelain commands
247~~~~~~~~~~~~~~~~~~~~~~~
248
Junio C Hamano7c73c662007-01-19 00:37:50249include::cmds-mainporcelain.txt[]
Junio C Hamanob19b4f02006-10-29 20:47:22250
251Ancillary Commands
252~~~~~~~~~~~~~~~~~~
253Manipulators:
254
Junio C Hamano7c73c662007-01-19 00:37:50255include::cmds-ancillarymanipulators.txt[]
Junio C Hamanob19b4f02006-10-29 20:47:22256
257Interrogators:
258
Junio C Hamano7c73c662007-01-19 00:37:50259include::cmds-ancillaryinterrogators.txt[]
Junio C Hamanob19b4f02006-10-29 20:47:22260
Junio C Hamano4ad294b2007-01-20 02:22:50261
262Interacting with Others
263~~~~~~~~~~~~~~~~~~~~~~~
264
265These commands are to interact with foreign SCM and with other
266people via patch over e-mail.
267
268include::cmds-foreignscminterface.txt[]
269
270
Junio C Hamanoe27fb932006-04-03 05:34:10271Low-level commands (plumbing)
272-----------------------------
Junio C Hamano1a4e8412005-12-27 08:17:23273
Junio C Hamanoe27fb932006-04-03 05:34:10274Although git includes its
275own porcelain layer, its low-level commands are sufficient to support
276development of alternative porcelains. Developers of such porcelains
Junio C Hamano35738e82008-01-07 07:55:46277might start by reading about linkgit:git-update-index[1] and
278linkgit:git-read-tree[1].
Junio C Hamano1a4e8412005-12-27 08:17:23279
Junio C Hamano4ad294b2007-01-20 02:22:50280The interface (input, output, set of options and the semantics)
281to these low-level commands are meant to be a lot more stable
282than Porcelain level commands, because these commands are
283primarily for scripted use. The interface to Porcelain commands
284on the other hand are subject to change in order to improve the
285end user experience.
286
287The following description divides
288the low-level commands into commands that manipulate objects (in
Junio C Hamanoe27fb932006-04-03 05:34:10289the repository, index, and working tree), commands that interrogate and
290compare objects, and commands that move objects and references between
291repositories.
Junio C Hamano1a4e8412005-12-27 08:17:23292
Junio C Hamano4ad294b2007-01-20 02:22:50293
Junio C Hamano1a4e8412005-12-27 08:17:23294Manipulation commands
295~~~~~~~~~~~~~~~~~~~~~
Junio C Hamano1a4e8412005-12-27 08:17:23296
Junio C Hamano7c73c662007-01-19 00:37:50297include::cmds-plumbingmanipulators.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23298
299
300Interrogation commands
301~~~~~~~~~~~~~~~~~~~~~~
302
Junio C Hamano7c73c662007-01-19 00:37:50303include::cmds-plumbinginterrogators.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23304
305In general, the interrogate commands do not touch the files in
306the working tree.
307
308
309Synching repositories
310~~~~~~~~~~~~~~~~~~~~~
311
Junio C Hamano7c73c662007-01-19 00:37:50312include::cmds-synchingrepositories.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23313
Junio C Hamano4ad294b2007-01-20 02:22:50314The following are helper programs used by the above; end users
315typically do not use them directly.
316
317include::cmds-synchelpers.txt[]
318
319
320Internal helper commands
321~~~~~~~~~~~~~~~~~~~~~~~~
322
323These are internal helper commands used by other commands; end
324users typically do not use them directly.
325
326include::cmds-purehelpers.txt[]
327
Junio C Hamano1a4e8412005-12-27 08:17:23328
Junio C Hamano1a4e8412005-12-27 08:17:23329Configuration Mechanism
330-----------------------
331
332Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
333is used to hold per-repository configuration options. It is a
Junio C Hamano51c2ab02006-07-09 20:38:54334simple text file modeled after `.ini` format familiar to some
Junio C Hamano1a4e8412005-12-27 08:17:23335people. Here is an example:
336
337------------
338#
339# A '#' or ';' character indicates a comment.
340#
341
342; core variables
343[core]
344; Don't trust file modes
345filemode = false
346
347; user identity
348[user]
349name = "Junio C Hamano"
350email = "junkio@twinsun.com"
351
352------------
353
354Various commands read from the configuration file and adjust
355their operation accordingly.
356
357
358Identifier Terminology
359----------------------
360<object>::
361Indicates the object name for any type of object.
362
363<blob>::
364Indicates a blob object name.
365
366<tree>::
367Indicates a tree object name.
368
369<commit>::
370Indicates a commit object name.
371
372<tree-ish>::
373Indicates a tree, commit or tag object name. A
374command that takes a <tree-ish> argument ultimately wants to
375operate on a <tree> object but automatically dereferences
376<commit> and <tag> objects that point at a <tree>.
377
Junio C Hamano60f8aa82007-03-06 09:58:26378<commit-ish>::
379Indicates a commit or tag object name. A
380command that takes a <commit-ish> argument ultimately wants to
381operate on a <commit> object but automatically dereferences
382<tag> objects that point at a <commit>.
383
Junio C Hamano1a4e8412005-12-27 08:17:23384<type>::
385Indicates that an object type is required.
386Currently one of: `blob`, `tree`, `commit`, or `tag`.
387
388<file>::
389Indicates a filename - almost always relative to the
390root of the tree structure `GIT_INDEX_FILE` describes.
391
392Symbolic Identifiers
393--------------------
394Any git command accepting any <object> can also use the following
395symbolic notation:
396
397HEAD::
398indicates the head of the current branch (i.e. the
399contents of `$GIT_DIR/HEAD`).
400
401<tag>::
402a valid tag 'name'
403(i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).
404
405<head>::
406a valid head 'name'
407(i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
408
Junio C Hamanoff4b4312006-10-25 22:55:31409For a more complete list of ways to spell object names, see
Junio C Hamano35738e82008-01-07 07:55:46410"SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1].
Junio C Hamanoff4b4312006-10-25 22:55:31411
Junio C Hamano1a4e8412005-12-27 08:17:23412
413File/Directory Structure
414------------------------
415
Junio C Hamanofce7c7e2008-07-02 03:06:38416Please see the linkgit:gitrepository-layout[5] document.
Junio C Hamano1a4e8412005-12-27 08:17:23417
Junio C Hamanofce7c7e2008-07-02 03:06:38418Read linkgit:githooks[5] for more details about each hook.
Junio C Hamano818f7d62006-03-26 01:49:30419
Junio C Hamano1a4e8412005-12-27 08:17:23420Higher level SCMs may provide and manage additional information in the
421`$GIT_DIR`.
422
423
424Terminology
425-----------
Junio C Hamanofce7c7e2008-07-02 03:06:38426Please see linkgit:gitglossary[7].
Junio C Hamano1a4e8412005-12-27 08:17:23427
428
429Environment Variables
430---------------------
431Various git commands use the following environment variables:
432
433The git Repository
434~~~~~~~~~~~~~~~~~~
435These environment variables apply to 'all' core git commands. Nb: it
436is worth noting that they may be used/overridden by SCMS sitting above
437git so take care if using Cogito etc.
438
439'GIT_INDEX_FILE'::
440This environment allows the specification of an alternate
441index file. If not specified, the default of `$GIT_DIR/index`
442is used.
443
444'GIT_OBJECT_DIRECTORY'::
445If the object storage directory is specified via this
446environment variable then the sha1 directories are created
447underneath - otherwise the default `$GIT_DIR/objects`
448directory is used.
449
450'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
451Due to the immutable nature of git objects, old objects can be
452archived into shared, read-only directories. This variable
Junio C Hamano05bf9c52008-07-03 09:21:58453specifies a ":" separated (on Windows ";" separated) list
454of git object directories which can be used to search for git
455objects. New objects will not be written to these directories.
Junio C Hamano1a4e8412005-12-27 08:17:23456
457'GIT_DIR'::
458If the 'GIT_DIR' environment variable is set then it
459specifies a path to use instead of the default `.git`
460for the base of the repository.
461
Junio C Hamanod526ba92007-07-02 00:17:42462'GIT_WORK_TREE'::
463Set the path to the working tree. The value will not be
464used in combination with repositories found automatically in
465a .git directory (i.e. $GIT_DIR is not set).
466This can also be controlled by the '--work-tree' command line
467option and the core.worktree configuration variable.
468
Junio C Hamano15048272008-07-07 22:10:48469'GIT_CEILING_DIRECTORIES'::
470This should be a colon-separated list of absolute paths.
471If set, it is a list of directories that git should not chdir
472up into while looking for a repository directory.
473It will not exclude the current working directory or
474a GIT_DIR set on the command line or in the environment.
475(Useful for excluding slow-loading network directories.)
476
Junio C Hamano1a4e8412005-12-27 08:17:23477git Commits
478~~~~~~~~~~~
479'GIT_AUTHOR_NAME'::
480'GIT_AUTHOR_EMAIL'::
481'GIT_AUTHOR_DATE'::
482'GIT_COMMITTER_NAME'::
483'GIT_COMMITTER_EMAIL'::
Junio C Hamano469d60e2007-04-29 18:30:34484'GIT_COMMITTER_DATE'::
485'EMAIL'::
Junio C Hamano35738e82008-01-07 07:55:46486see linkgit:git-commit-tree[1]
Junio C Hamano1a4e8412005-12-27 08:17:23487
488git Diffs
489~~~~~~~~~
490'GIT_DIFF_OPTS'::
Junio C Hamano1c437122006-11-28 02:22:25491Only valid setting is "--unified=??" or "-u??" to set the
492number of context lines shown when a unified diff is created.
493This takes precedence over any "-U" or "--unified" option
494value passed on the git diff command line.
495
Junio C Hamano1a4e8412005-12-27 08:17:23496'GIT_EXTERNAL_DIFF'::
Junio C Hamano1c437122006-11-28 02:22:25497When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
498program named by it is called, instead of the diff invocation
499described above. For a path that is added, removed, or modified,
500 'GIT_EXTERNAL_DIFF' is called with 7 parameters:
501
502path old-file old-hex old-mode new-file new-hex new-mode
503+
504where:
505
506<old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
507 contents of <old|new>,
508<old|new>-hex:: are the 40-hexdigit SHA1 hashes,
509<old|new>-mode:: are the octal representation of the file modes.
510
511+
512The file parameters can point at the user's working file
513(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
514when a new file is added), or a temporary file (e.g. `old-file` in the
515index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the
516temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
517+
518For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
519parameter, <path>.
Junio C Hamano1a4e8412005-12-27 08:17:23520
Junio C Hamano7ccb9fd2006-07-15 01:38:40521other
522~~~~~
Junio C Hamano1e6e0062007-07-13 05:33:25523'GIT_MERGE_VERBOSITY'::
524A number controlling the amount of output shown by
525the recursive merge strategy. Overrides merge.verbosity.
Junio C Hamano35738e82008-01-07 07:55:46526See linkgit:git-merge[1]
Junio C Hamano1e6e0062007-07-13 05:33:25527
Junio C Hamano85e45fa2006-08-13 07:47:41528'GIT_PAGER'::
Junio C Hamanof6002a92007-07-20 10:28:22529This environment variable overrides `$PAGER`. If it is set
530to an empty string or to the value "cat", git will not launch
Junio C Hamano0551f6a2008-08-25 00:33:33531a pager. See also the `core.pager` option in
532linkgit:git-config[1].
Junio C Hamano85e45fa2006-08-13 07:47:41533
Junio C Hamano4cd1c0e2007-08-06 04:39:14534'GIT_SSH'::
Junio C Hamanoba4b9282008-07-06 05:20:31535If this environment variable is set then 'git-fetch'
536and 'git-push' will use this command instead
537of 'ssh' when they need to connect to a remote system.
Junio C Hamanofce7c7e2008-07-02 03:06:38538The '$GIT_SSH' command will be given exactly two arguments:
Junio C Hamano4cd1c0e2007-08-06 04:39:14539the 'username@host' (or just 'host') from the URL and the
540shell command to execute on that remote system.
541+
542To pass options to the program that you want to list in GIT_SSH
543you will need to wrap the program and options into a shell script,
544then set GIT_SSH to refer to the shell script.
545+
546Usually it is easier to configure any desired options through your
547personal `.ssh/config` file. Please consult your ssh documentation
548for further details.
549
Junio C Hamano401939f2007-07-01 06:34:30550'GIT_FLUSH'::
551If this environment variable is set to "1", then commands such
Junio C Hamanoba4b9282008-07-06 05:20:31552as 'git-blame' (in incremental mode), 'git-rev-list', 'git-log',
553and 'git-whatchanged' will force a flush of the output stream
Junio C Hamano401939f2007-07-01 06:34:30554after each commit-oriented record have been flushed. If this
555variable is set to "0", the output of these commands will be done
556using completely buffered I/O. If this environment variable is
557not set, git will choose buffered or record-oriented flushing
558based on whether stdout appears to be redirected to a file or not.
559
Junio C Hamano7ccb9fd2006-07-15 01:38:40560'GIT_TRACE'::
Junio C Hamanoef4b48b2006-09-04 10:08:34561If this variable is set to "1", "2" or "true" (comparison
562is case insensitive), git will print `trace:` messages on
Junio C Hamano7ccb9fd2006-07-15 01:38:40563stderr telling about alias expansion, built-in command
564execution and external command execution.
Junio C Hamanoef4b48b2006-09-04 10:08:34565If this variable is set to an integer value greater than 1
566and lower than 10 (strictly) then git will interpret this
567value as an open file descriptor and will try to write the
568trace messages into this file descriptor.
569Alternatively, if this variable is set to an absolute path
570(starting with a '/' character), git will interpret this
571as a file path and will try to write the trace messages
572into it.
Junio C Hamano7ccb9fd2006-07-15 01:38:40573
Junio C Hamano1a4e8412005-12-27 08:17:23574Discussion[[Discussion]]
575------------------------
Junio C Hamano597ffcf2007-09-17 17:33:15576
577More detail on the following is available from the
578link:user-manual.html#git-concepts[git concepts chapter of the
Junio C Hamanofce7c7e2008-07-02 03:06:38579user-manual] and linkgit:gitcore-tutorial[7].
Junio C Hamano597ffcf2007-09-17 17:33:15580
581A git project normally consists of a working directory with a ".git"
582subdirectory at the top level. The .git directory contains, among other
583things, a compressed object database representing the complete history
584of the project, an "index" file which links that history to the current
585contents of the working tree, and named pointers into that history such
586as tags and branch heads.
587
588The object database contains objects of three main types: blobs, which
589hold file data; trees, which point to blobs and other trees to build up
Junio C Hamanofe986052007-12-19 07:33:38590directory hierarchies; and commits, which each reference a single tree
Junio C Hamano597ffcf2007-09-17 17:33:15591and some number of parent commits.
592
593The commit, equivalent to what other systems call a "changeset" or
594"version", represents a step in the project's history, and each parent
595represents an immediately preceding step. Commits with more than one
596parent represent merges of independent lines of development.
597
598All objects are named by the SHA1 hash of their contents, normally
599written as a string of 40 hex digits. Such names are globally unique.
600The entire history leading up to a commit can be vouched for by signing
601just that commit. A fourth object type, the tag, is provided for this
602purpose.
603
604When first created, objects are stored in individual files, but for
605efficiency may later be compressed together into "pack files".
606
607Named pointers called refs mark interesting points in history. A ref
608may contain the SHA1 name of an object or the name of another ref. Refs
609with names beginning `ref/head/` contain the SHA1 name of the most
Junio C Hamanofe986052007-12-19 07:33:38610recent commit (or "head") of a branch under development. SHA1 names of
Junio C Hamano597ffcf2007-09-17 17:33:15611tags of interest are stored under `ref/tags/`. A special ref named
612`HEAD` contains the name of the currently checked-out branch.
613
614The index file is initialized with a list of all paths and, for each
615path, a blob object and a set of attributes. The blob object represents
616the contents of the file as of the head of the current branch. The
617attributes (last modified time, size, etc.) are taken from the
618corresponding file in the working tree. Subsequent changes to the
619working tree can be found by comparing these attributes. The index may
620be updated with new content, and new commits may be created from the
621content stored in the index.
622
623The index is also capable of storing multiple entries (called "stages")
624for a given pathname. These stages are used to hold the various
625unmerged version of a file when a merge is in progress.
Junio C Hamano1a4e8412005-12-27 08:17:23626
627Authors
628-------
629* git's founding father is Linus Torvalds <torvalds@osdl.org>.
Junio C Hamanodbb64592007-09-01 11:17:39630* The current git nurse is Junio C Hamano <gitster@pobox.com>.
Junio C Hamanoe0facb92007-12-05 10:59:48631* The git potty was written by Andreas Ericsson <ae@op5.se>.
Junio C Hamano1a4e8412005-12-27 08:17:23632* General upbringing is handled by the git-list <git@vger.kernel.org>.
633
634Documentation
635--------------
636The documentation for git suite was started by David Greaves
637<david@dgreaves.com>, and later enhanced greatly by the
638contributors on the git-list <git@vger.kernel.org>.
639
Junio C Hamano9e1793f2008-06-02 07:31:16640SEE ALSO
641--------
642linkgit:gittutorial[7], linkgit:gittutorial-2[7],
Junio C Hamanoaf1987f2008-08-03 07:58:19643link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7],
Junio C Hamano9e1793f2008-06-02 07:31:16644linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
Junio C Hamanofa3ff872008-07-03 01:48:08645linkgit:gitcli[7], link:user-manual.html[The Git User's Manual]
Junio C Hamano9e1793f2008-06-02 07:31:16646
Junio C Hamano1a4e8412005-12-27 08:17:23647GIT
648---
Junio C Hamanof7c042d2008-06-06 22:50:53649Part of the linkgit:git[1] suite