Sync with 1.7.7.7
[git/jrn.git] / Documentation / git.txt
blobe71a0d1d32f2847b2ec71a6b343765735ab63e6b
1 git(1)
2 ======
4 NAME
5 ----
6 git - the stupid content tracker
9 SYNOPSIS
10 --------
11 [verse]
12 'git' [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
13     [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
14     [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
15     [-c <name>=<value>]
16     [--help] <command> [<args>]
18 DESCRIPTION
19 -----------
20 Git is a fast, scalable, distributed revision control system with an
21 unusually rich command set that provides both high-level operations
22 and full access to internals.
24 See linkgit:gittutorial[7] to get started, then see
25 link:everyday.html[Everyday Git] for a useful minimum set of commands, and
26 "man git-commandname" for documentation of each command.  CVS users may
27 also want to read linkgit:gitcvs-migration[7].  See
28 the link:user-manual.html[Git User's Manual] for a more in-depth
29 introduction.
31 The '<command>' is either a name of a Git command (see below) or an alias
32 as defined in the configuration file (see linkgit:git-config[1]).
34 Formatted and hyperlinked version of the latest git
35 documentation can be viewed at
36 `http://www.kernel.org/pub/software/scm/git/docs/`.
38 ifdef::stalenotes[]
39 [NOTE]
40 ============
42 You are reading the documentation for the latest (possibly
43 unreleased) version of git, that is available from 'master'
44 branch of the `git.git` repository.
45 Documentation for older releases are available here:
47 * link:v1.7.8.4/git.html[documentation for release 1.7.8.4]
49 * release notes for
50   link:RelNotes/1.7.8.4.txt[1.7.8.4],
51   link:RelNotes/1.7.8.3.txt[1.7.8.3],
52   link:RelNotes/1.7.8.2.txt[1.7.8.2],
53   link:RelNotes/1.7.8.1.txt[1.7.8.1],
54   link:RelNotes/1.7.8.txt[1.7.8].
56 * link:v1.7.7.7/git.html[documentation for release 1.7.7.7]
58 * release notes for
59   link:RelNotes/1.7.7.7.txt[1.7.7.7],
60   link:RelNotes/1.7.7.6.txt[1.7.7.6],
61   link:RelNotes/1.7.7.5.txt[1.7.7.5],
62   link:RelNotes/1.7.7.4.txt[1.7.7.4],
63   link:RelNotes/1.7.7.3.txt[1.7.7.3],
64   link:RelNotes/1.7.7.2.txt[1.7.7.2],
65   link:RelNotes/1.7.7.1.txt[1.7.7.1],
66   link:RelNotes/1.7.7.txt[1.7.7].
68 * link:v1.7.6.6/git.html[documentation for release 1.7.6.6]
70 * release notes for
71   link:RelNotes/1.7.6.6.txt[1.7.6.6],
72   link:RelNotes/1.7.6.5.txt[1.7.6.5],
73   link:RelNotes/1.7.6.4.txt[1.7.6.4],
74   link:RelNotes/1.7.6.3.txt[1.7.6.3],
75   link:RelNotes/1.7.6.2.txt[1.7.6.2],
76   link:RelNotes/1.7.6.1.txt[1.7.6.1],
77   link:RelNotes/1.7.6.txt[1.7.6].
79 * link:v1.7.5.4/git.html[documentation for release 1.7.5.4]
81 * release notes for
82   link:RelNotes/1.7.5.4.txt[1.7.5.4],
83   link:RelNotes/1.7.5.3.txt[1.7.5.3],
84   link:RelNotes/1.7.5.2.txt[1.7.5.2],
85   link:RelNotes/1.7.5.1.txt[1.7.5.1],
86   link:RelNotes/1.7.5.txt[1.7.5].
88 * link:v1.7.4.5/git.html[documentation for release 1.7.4.5]
90 * release notes for
91   link:RelNotes/1.7.4.5.txt[1.7.4.5],
92   link:RelNotes/1.7.4.4.txt[1.7.4.4],
93   link:RelNotes/1.7.4.3.txt[1.7.4.3],
94   link:RelNotes/1.7.4.2.txt[1.7.4.2],
95   link:RelNotes/1.7.4.1.txt[1.7.4.1],
96   link:RelNotes/1.7.4.txt[1.7.4].
98 * link:v1.7.3.5/git.html[documentation for release 1.7.3.5]
100 * release notes for
101   link:RelNotes/1.7.3.5.txt[1.7.3.5],
102   link:RelNotes/1.7.3.4.txt[1.7.3.4],
103   link:RelNotes/1.7.3.3.txt[1.7.3.3],
104   link:RelNotes/1.7.3.2.txt[1.7.3.2],
105   link:RelNotes/1.7.3.1.txt[1.7.3.1],
106   link:RelNotes/1.7.3.txt[1.7.3].
108 * link:v1.7.2.5/git.html[documentation for release 1.7.2.5]
110 * release notes for
111   link:RelNotes/1.7.2.5.txt[1.7.2.5],
112   link:RelNotes/1.7.2.4.txt[1.7.2.4],
113   link:RelNotes/1.7.2.3.txt[1.7.2.3],
114   link:RelNotes/1.7.2.2.txt[1.7.2.2],
115   link:RelNotes/1.7.2.1.txt[1.7.2.1],
116   link:RelNotes/1.7.2.txt[1.7.2].
118 * link:v1.7.1.4/git.html[documentation for release 1.7.1.4]
120 * release notes for
121   link:RelNotes/1.7.1.4.txt[1.7.1.4],
122   link:RelNotes/1.7.1.3.txt[1.7.1.3],
123   link:RelNotes/1.7.1.2.txt[1.7.1.2],
124   link:RelNotes/1.7.1.1.txt[1.7.1.1],
125   link:RelNotes/1.7.1.txt[1.7.1].
127 * link:v1.7.0.9/git.html[documentation for release 1.7.0.9]
129 * release notes for
130   link:RelNotes/1.7.0.9.txt[1.7.0.9],
131   link:RelNotes/1.7.0.8.txt[1.7.0.8],
132   link:RelNotes/1.7.0.7.txt[1.7.0.7],
133   link:RelNotes/1.7.0.6.txt[1.7.0.6],
134   link:RelNotes/1.7.0.5.txt[1.7.0.5],
135   link:RelNotes/1.7.0.4.txt[1.7.0.4],
136   link:RelNotes/1.7.0.3.txt[1.7.0.3],
137   link:RelNotes/1.7.0.2.txt[1.7.0.2],
138   link:RelNotes/1.7.0.1.txt[1.7.0.1],
139   link:RelNotes/1.7.0.txt[1.7.0].
141 * link:v1.6.6.3/git.html[documentation for release 1.6.6.3]
143 * release notes for
144   link:RelNotes/1.6.6.3.txt[1.6.6.3],
145   link:RelNotes/1.6.6.2.txt[1.6.6.2],
146   link:RelNotes/1.6.6.1.txt[1.6.6.1],
147   link:RelNotes/1.6.6.txt[1.6.6].
149 * link:v1.6.5.9/git.html[documentation for release 1.6.5.9]
151 * release notes for
152   link:RelNotes/1.6.5.9.txt[1.6.5.9],
153   link:RelNotes/1.6.5.8.txt[1.6.5.8],
154   link:RelNotes/1.6.5.7.txt[1.6.5.7],
155   link:RelNotes/1.6.5.6.txt[1.6.5.6],
156   link:RelNotes/1.6.5.5.txt[1.6.5.5],
157   link:RelNotes/1.6.5.4.txt[1.6.5.4],
158   link:RelNotes/1.6.5.3.txt[1.6.5.3],
159   link:RelNotes/1.6.5.2.txt[1.6.5.2],
160   link:RelNotes/1.6.5.1.txt[1.6.5.1],
161   link:RelNotes/1.6.5.txt[1.6.5].
163 * link:v1.6.4.5/git.html[documentation for release 1.6.4.5]
165 * release notes for
166   link:RelNotes/1.6.4.5.txt[1.6.4.5],
167   link:RelNotes/1.6.4.4.txt[1.6.4.4],
168   link:RelNotes/1.6.4.3.txt[1.6.4.3],
169   link:RelNotes/1.6.4.2.txt[1.6.4.2],
170   link:RelNotes/1.6.4.1.txt[1.6.4.1],
171   link:RelNotes/1.6.4.txt[1.6.4].
173 * link:v1.6.3.4/git.html[documentation for release 1.6.3.4]
175 * release notes for
176   link:RelNotes/1.6.3.4.txt[1.6.3.4],
177   link:RelNotes/1.6.3.3.txt[1.6.3.3],
178   link:RelNotes/1.6.3.2.txt[1.6.3.2],
179   link:RelNotes/1.6.3.1.txt[1.6.3.1],
180   link:RelNotes/1.6.3.txt[1.6.3].
182 * release notes for
183   link:RelNotes/1.6.2.5.txt[1.6.2.5],
184   link:RelNotes/1.6.2.4.txt[1.6.2.4],
185   link:RelNotes/1.6.2.3.txt[1.6.2.3],
186   link:RelNotes/1.6.2.2.txt[1.6.2.2],
187   link:RelNotes/1.6.2.1.txt[1.6.2.1],
188   link:RelNotes/1.6.2.txt[1.6.2].
190 * link:v1.6.1.3/git.html[documentation for release 1.6.1.3]
192 * release notes for
193   link:RelNotes/1.6.1.3.txt[1.6.1.3],
194   link:RelNotes/1.6.1.2.txt[1.6.1.2],
195   link:RelNotes/1.6.1.1.txt[1.6.1.1],
196   link:RelNotes/1.6.1.txt[1.6.1].
198 * link:v1.6.0.6/git.html[documentation for release 1.6.0.6]
200 * release notes for
201   link:RelNotes/1.6.0.6.txt[1.6.0.6],
202   link:RelNotes/1.6.0.5.txt[1.6.0.5],
203   link:RelNotes/1.6.0.4.txt[1.6.0.4],
204   link:RelNotes/1.6.0.3.txt[1.6.0.3],
205   link:RelNotes/1.6.0.2.txt[1.6.0.2],
206   link:RelNotes/1.6.0.1.txt[1.6.0.1],
207   link:RelNotes/1.6.0.txt[1.6.0].
209 * link:v1.5.6.6/git.html[documentation for release 1.5.6.6]
211 * release notes for
212   link:RelNotes/1.5.6.6.txt[1.5.6.6],
213   link:RelNotes/1.5.6.5.txt[1.5.6.5],
214   link:RelNotes/1.5.6.4.txt[1.5.6.4],
215   link:RelNotes/1.5.6.3.txt[1.5.6.3],
216   link:RelNotes/1.5.6.2.txt[1.5.6.2],
217   link:RelNotes/1.5.6.1.txt[1.5.6.1],
218   link:RelNotes/1.5.6.txt[1.5.6].
220 * link:v1.5.5.6/git.html[documentation for release 1.5.5.6]
222 * release notes for
223   link:RelNotes/1.5.5.6.txt[1.5.5.6],
224   link:RelNotes/1.5.5.5.txt[1.5.5.5],
225   link:RelNotes/1.5.5.4.txt[1.5.5.4],
226   link:RelNotes/1.5.5.3.txt[1.5.5.3],
227   link:RelNotes/1.5.5.2.txt[1.5.5.2],
228   link:RelNotes/1.5.5.1.txt[1.5.5.1],
229   link:RelNotes/1.5.5.txt[1.5.5].
231 * link:v1.5.4.7/git.html[documentation for release 1.5.4.7]
233 * release notes for
234   link:RelNotes/1.5.4.7.txt[1.5.4.7],
235   link:RelNotes/1.5.4.6.txt[1.5.4.6],
236   link:RelNotes/1.5.4.5.txt[1.5.4.5],
237   link:RelNotes/1.5.4.4.txt[1.5.4.4],
238   link:RelNotes/1.5.4.3.txt[1.5.4.3],
239   link:RelNotes/1.5.4.2.txt[1.5.4.2],
240   link:RelNotes/1.5.4.1.txt[1.5.4.1],
241   link:RelNotes/1.5.4.txt[1.5.4].
243 * link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
245 * release notes for
246   link:RelNotes/1.5.3.8.txt[1.5.3.8],
247   link:RelNotes/1.5.3.7.txt[1.5.3.7],
248   link:RelNotes/1.5.3.6.txt[1.5.3.6],
249   link:RelNotes/1.5.3.5.txt[1.5.3.5],
250   link:RelNotes/1.5.3.4.txt[1.5.3.4],
251   link:RelNotes/1.5.3.3.txt[1.5.3.3],
252   link:RelNotes/1.5.3.2.txt[1.5.3.2],
253   link:RelNotes/1.5.3.1.txt[1.5.3.1],
254   link:RelNotes/1.5.3.txt[1.5.3].
256 * link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
258 * release notes for
259   link:RelNotes/1.5.2.5.txt[1.5.2.5],
260   link:RelNotes/1.5.2.4.txt[1.5.2.4],
261   link:RelNotes/1.5.2.3.txt[1.5.2.3],
262   link:RelNotes/1.5.2.2.txt[1.5.2.2],
263   link:RelNotes/1.5.2.1.txt[1.5.2.1],
264   link:RelNotes/1.5.2.txt[1.5.2].
266 * link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
268 * release notes for
269   link:RelNotes/1.5.1.6.txt[1.5.1.6],
270   link:RelNotes/1.5.1.5.txt[1.5.1.5],
271   link:RelNotes/1.5.1.4.txt[1.5.1.4],
272   link:RelNotes/1.5.1.3.txt[1.5.1.3],
273   link:RelNotes/1.5.1.2.txt[1.5.1.2],
274   link:RelNotes/1.5.1.1.txt[1.5.1.1],
275   link:RelNotes/1.5.1.txt[1.5.1].
277 * link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
279 * release notes for
280   link:RelNotes/1.5.0.7.txt[1.5.0.7],
281   link:RelNotes/1.5.0.6.txt[1.5.0.6],
282   link:RelNotes/1.5.0.5.txt[1.5.0.5],
283   link:RelNotes/1.5.0.3.txt[1.5.0.3],
284   link:RelNotes/1.5.0.2.txt[1.5.0.2],
285   link:RelNotes/1.5.0.1.txt[1.5.0.1],
286   link:RelNotes/1.5.0.txt[1.5.0].
288 * documentation for release link:v1.4.4.4/git.html[1.4.4.4],
289   link:v1.3.3/git.html[1.3.3],
290   link:v1.2.6/git.html[1.2.6],
291   link:v1.0.13/git.html[1.0.13].
293 ============
295 endif::stalenotes[]
297 OPTIONS
298 -------
299 --version::
300         Prints the git suite version that the 'git' program came from.
302 --help::
303         Prints the synopsis and a list of the most commonly used
304         commands. If the option '--all' or '-a' is given then all
305         available commands are printed. If a git command is named this
306         option will bring up the manual page for that command.
308 Other options are available to control how the manual page is
309 displayed. See linkgit:git-help[1] for more information,
310 because `git --help ...` is converted internally into `git
311 help ...`.
313 -c <name>=<value>::
314         Pass a configuration parameter to the command. The value
315         given will override values from configuration files.
316         The <name> is expected in the same format as listed by
317         'git config' (subkeys separated by dots).
319 --exec-path[=<path>]::
320         Path to wherever your core git programs are installed.
321         This can also be controlled by setting the GIT_EXEC_PATH
322         environment variable. If no path is given, 'git' will print
323         the current setting and then exit.
325 --html-path::
326         Print the path, without trailing slash, where git's HTML
327         documentation is installed and exit.
329 --man-path::
330         Print the manpath (see `man(1)`) for the man pages for
331         this version of git and exit.
333 --info-path::
334         Print the path where the Info files documenting this
335         version of git are installed and exit.
337 -p::
338 --paginate::
339         Pipe all output into 'less' (or if set, $PAGER) if standard
340         output is a terminal.  This overrides the `pager.<cmd>`
341         configuration options (see the "Configuration Mechanism" section
342         below).
344 --no-pager::
345         Do not pipe git output into a pager.
347 --git-dir=<path>::
348         Set the path to the repository. This can also be controlled by
349         setting the GIT_DIR environment variable. It can be an absolute
350         path or relative path to current working directory.
352 --work-tree=<path>::
353         Set the path to the working tree. It can be an absolute path
354         or a path relative to the current working directory.
355         This can also be controlled by setting the GIT_WORK_TREE
356         environment variable and the core.worktree configuration
357         variable (see core.worktree in linkgit:git-config[1] for a
358         more detailed discussion).
360 --namespace=<path>::
361         Set the git namespace.  See linkgit:gitnamespaces[7] for more
362         details.  Equivalent to setting the `GIT_NAMESPACE` environment
363         variable.
365 --bare::
366         Treat the repository as a bare repository.  If GIT_DIR
367         environment is not set, it is set to the current working
368         directory.
370 --no-replace-objects::
371         Do not use replacement refs to replace git objects. See
372         linkgit:git-replace[1] for more information.
375 FURTHER DOCUMENTATION
376 ---------------------
378 See the references above to get started using git.  The following is
379 probably more detail than necessary for a first-time user.
381 The link:user-manual.html#git-concepts[git concepts chapter of the
382 user-manual] and linkgit:gitcore-tutorial[7] both provide
383 introductions to the underlying git architecture.
385 See linkgit:gitworkflows[7] for an overview of recommended workflows.
387 See also the link:howto-index.html[howto] documents for some useful
388 examples.
390 The internals are documented in the
391 link:technical/api-index.html[GIT API documentation].
393 GIT COMMANDS
394 ------------
396 We divide git into high level ("porcelain") commands and low level
397 ("plumbing") commands.
399 High-level commands (porcelain)
400 -------------------------------
402 We separate the porcelain commands into the main commands and some
403 ancillary user utilities.
405 Main porcelain commands
406 ~~~~~~~~~~~~~~~~~~~~~~~
408 include::cmds-mainporcelain.txt[]
410 Ancillary Commands
411 ~~~~~~~~~~~~~~~~~~
412 Manipulators:
414 include::cmds-ancillarymanipulators.txt[]
416 Interrogators:
418 include::cmds-ancillaryinterrogators.txt[]
421 Interacting with Others
422 ~~~~~~~~~~~~~~~~~~~~~~~
424 These commands are to interact with foreign SCM and with other
425 people via patch over e-mail.
427 include::cmds-foreignscminterface.txt[]
430 Low-level commands (plumbing)
431 -----------------------------
433 Although git includes its
434 own porcelain layer, its low-level commands are sufficient to support
435 development of alternative porcelains.  Developers of such porcelains
436 might start by reading about linkgit:git-update-index[1] and
437 linkgit:git-read-tree[1].
439 The interface (input, output, set of options and the semantics)
440 to these low-level commands are meant to be a lot more stable
441 than Porcelain level commands, because these commands are
442 primarily for scripted use.  The interface to Porcelain commands
443 on the other hand are subject to change in order to improve the
444 end user experience.
446 The following description divides
447 the low-level commands into commands that manipulate objects (in
448 the repository, index, and working tree), commands that interrogate and
449 compare objects, and commands that move objects and references between
450 repositories.
453 Manipulation commands
454 ~~~~~~~~~~~~~~~~~~~~~
456 include::cmds-plumbingmanipulators.txt[]
459 Interrogation commands
460 ~~~~~~~~~~~~~~~~~~~~~~
462 include::cmds-plumbinginterrogators.txt[]
464 In general, the interrogate commands do not touch the files in
465 the working tree.
468 Synching repositories
469 ~~~~~~~~~~~~~~~~~~~~~
471 include::cmds-synchingrepositories.txt[]
473 The following are helper commands used by the above; end users
474 typically do not use them directly.
476 include::cmds-synchelpers.txt[]
479 Internal helper commands
480 ~~~~~~~~~~~~~~~~~~~~~~~~
482 These are internal helper commands used by other commands; end
483 users typically do not use them directly.
485 include::cmds-purehelpers.txt[]
488 Configuration Mechanism
489 -----------------------
491 Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
492 is used to hold per-repository configuration options.  It is a
493 simple text file modeled after `.ini` format familiar to some
494 people.  Here is an example:
496 ------------
498 # A '#' or ';' character indicates a comment.
501 ; core variables
502 [core]
503         ; Don't trust file modes
504         filemode = false
506 ; user identity
507 [user]
508         name = "Junio C Hamano"
509         email = "junkio@twinsun.com"
511 ------------
513 Various commands read from the configuration file and adjust
514 their operation accordingly.  See linkgit:git-config[1] for a
515 list.
518 Identifier Terminology
519 ----------------------
520 <object>::
521         Indicates the object name for any type of object.
523 <blob>::
524         Indicates a blob object name.
526 <tree>::
527         Indicates a tree object name.
529 <commit>::
530         Indicates a commit object name.
532 <tree-ish>::
533         Indicates a tree, commit or tag object name.  A
534         command that takes a <tree-ish> argument ultimately wants to
535         operate on a <tree> object but automatically dereferences
536         <commit> and <tag> objects that point at a <tree>.
538 <commit-ish>::
539         Indicates a commit or tag object name.  A
540         command that takes a <commit-ish> argument ultimately wants to
541         operate on a <commit> object but automatically dereferences
542         <tag> objects that point at a <commit>.
544 <type>::
545         Indicates that an object type is required.
546         Currently one of: `blob`, `tree`, `commit`, or `tag`.
548 <file>::
549         Indicates a filename - almost always relative to the
550         root of the tree structure `GIT_INDEX_FILE` describes.
552 Symbolic Identifiers
553 --------------------
554 Any git command accepting any <object> can also use the following
555 symbolic notation:
557 HEAD::
558         indicates the head of the current branch.
560 <tag>::
561         a valid tag 'name'
562         (i.e. a `refs/tags/<tag>` reference).
564 <head>::
565         a valid head 'name'
566         (i.e. a `refs/heads/<head>` reference).
568 For a more complete list of ways to spell object names, see
569 "SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
572 File/Directory Structure
573 ------------------------
575 Please see the linkgit:gitrepository-layout[5] document.
577 Read linkgit:githooks[5] for more details about each hook.
579 Higher level SCMs may provide and manage additional information in the
580 `$GIT_DIR`.
583 Terminology
584 -----------
585 Please see linkgit:gitglossary[7].
588 Environment Variables
589 ---------------------
590 Various git commands use the following environment variables:
592 The git Repository
593 ~~~~~~~~~~~~~~~~~~
594 These environment variables apply to 'all' core git commands. Nb: it
595 is worth noting that they may be used/overridden by SCMS sitting above
596 git so take care if using Cogito etc.
598 'GIT_INDEX_FILE'::
599         This environment allows the specification of an alternate
600         index file. If not specified, the default of `$GIT_DIR/index`
601         is used.
603 'GIT_OBJECT_DIRECTORY'::
604         If the object storage directory is specified via this
605         environment variable then the sha1 directories are created
606         underneath - otherwise the default `$GIT_DIR/objects`
607         directory is used.
609 'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
610         Due to the immutable nature of git objects, old objects can be
611         archived into shared, read-only directories. This variable
612         specifies a ":" separated (on Windows ";" separated) list
613         of git object directories which can be used to search for git
614         objects. New objects will not be written to these directories.
616 'GIT_DIR'::
617         If the 'GIT_DIR' environment variable is set then it
618         specifies a path to use instead of the default `.git`
619         for the base of the repository.
621 'GIT_WORK_TREE'::
622         Set the path to the working tree.  The value will not be
623         used in combination with repositories found automatically in
624         a .git directory (i.e. $GIT_DIR is not set).
625         This can also be controlled by the '--work-tree' command line
626         option and the core.worktree configuration variable.
628 'GIT_NAMESPACE'::
629         Set the git namespace; see linkgit:gitnamespaces[7] for details.
630         The '--namespace' command-line option also sets this value.
632 'GIT_CEILING_DIRECTORIES'::
633         This should be a colon-separated list of absolute paths.
634         If set, it is a list of directories that git should not chdir
635         up into while looking for a repository directory.
636         It will not exclude the current working directory or
637         a GIT_DIR set on the command line or in the environment.
638         (Useful for excluding slow-loading network directories.)
640 'GIT_DISCOVERY_ACROSS_FILESYSTEM'::
641         When run in a directory that does not have ".git" repository
642         directory, git tries to find such a directory in the parent
643         directories to find the top of the working tree, but by default it
644         does not cross filesystem boundaries.  This environment variable
645         can be set to true to tell git not to stop at filesystem
646         boundaries.  Like 'GIT_CEILING_DIRECTORIES', this will not affect
647         an explicit repository directory set via 'GIT_DIR' or on the
648         command line.
650 git Commits
651 ~~~~~~~~~~~
652 'GIT_AUTHOR_NAME'::
653 'GIT_AUTHOR_EMAIL'::
654 'GIT_AUTHOR_DATE'::
655 'GIT_COMMITTER_NAME'::
656 'GIT_COMMITTER_EMAIL'::
657 'GIT_COMMITTER_DATE'::
658 'EMAIL'::
659         see linkgit:git-commit-tree[1]
661 git Diffs
662 ~~~~~~~~~
663 'GIT_DIFF_OPTS'::
664         Only valid setting is "--unified=??" or "-u??" to set the
665         number of context lines shown when a unified diff is created.
666         This takes precedence over any "-U" or "--unified" option
667         value passed on the git diff command line.
669 'GIT_EXTERNAL_DIFF'::
670         When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
671         program named by it is called, instead of the diff invocation
672         described above.  For a path that is added, removed, or modified,
673         'GIT_EXTERNAL_DIFF' is called with 7 parameters:
675         path old-file old-hex old-mode new-file new-hex new-mode
677 where:
679         <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
680                          contents of <old|new>,
681         <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
682         <old|new>-mode:: are the octal representation of the file modes.
684 The file parameters can point at the user's working file
685 (e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
686 when a new file is added), or a temporary file (e.g. `old-file` in the
687 index).  'GIT_EXTERNAL_DIFF' should not worry about unlinking the
688 temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
690 For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
691 parameter, <path>.
693 other
694 ~~~~~
695 'GIT_MERGE_VERBOSITY'::
696         A number controlling the amount of output shown by
697         the recursive merge strategy.  Overrides merge.verbosity.
698         See linkgit:git-merge[1]
700 'GIT_PAGER'::
701         This environment variable overrides `$PAGER`. If it is set
702         to an empty string or to the value "cat", git will not launch
703         a pager.  See also the `core.pager` option in
704         linkgit:git-config[1].
706 'GIT_SSH'::
707         If this environment variable is set then 'git fetch'
708         and 'git push' will use this command instead
709         of 'ssh' when they need to connect to a remote system.
710         The '$GIT_SSH' command will be given exactly two arguments:
711         the 'username@host' (or just 'host') from the URL and the
712         shell command to execute on that remote system.
714 To pass options to the program that you want to list in GIT_SSH
715 you will need to wrap the program and options into a shell script,
716 then set GIT_SSH to refer to the shell script.
718 Usually it is easier to configure any desired options through your
719 personal `.ssh/config` file.  Please consult your ssh documentation
720 for further details.
722 'GIT_ASKPASS'::
723         If this environment variable is set, then git commands which need to
724         acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
725         will call this program with a suitable prompt as command line argument
726         and read the password from its STDOUT. See also the 'core.askpass'
727         option in linkgit:git-config[1].
729 'GIT_FLUSH'::
730         If this environment variable is set to "1", then commands such
731         as 'git blame' (in incremental mode), 'git rev-list', 'git log',
732         and 'git whatchanged' will force a flush of the output stream
733         after each commit-oriented record have been flushed.   If this
734         variable is set to "0", the output of these commands will be done
735         using completely buffered I/O.   If this environment variable is
736         not set, git will choose buffered or record-oriented flushing
737         based on whether stdout appears to be redirected to a file or not.
739 'GIT_TRACE'::
740         If this variable is set to "1", "2" or "true" (comparison
741         is case insensitive), git will print `trace:` messages on
742         stderr telling about alias expansion, built-in command
743         execution and external command execution.
744         If this variable is set to an integer value greater than 1
745         and lower than 10 (strictly) then git will interpret this
746         value as an open file descriptor and will try to write the
747         trace messages into this file descriptor.
748         Alternatively, if this variable is set to an absolute path
749         (starting with a '/' character), git will interpret this
750         as a file path and will try to write the trace messages
751         into it.
753 Discussion[[Discussion]]
754 ------------------------
756 More detail on the following is available from the
757 link:user-manual.html#git-concepts[git concepts chapter of the
758 user-manual] and linkgit:gitcore-tutorial[7].
760 A git project normally consists of a working directory with a ".git"
761 subdirectory at the top level.  The .git directory contains, among other
762 things, a compressed object database representing the complete history
763 of the project, an "index" file which links that history to the current
764 contents of the working tree, and named pointers into that history such
765 as tags and branch heads.
767 The object database contains objects of three main types: blobs, which
768 hold file data; trees, which point to blobs and other trees to build up
769 directory hierarchies; and commits, which each reference a single tree
770 and some number of parent commits.
772 The commit, equivalent to what other systems call a "changeset" or
773 "version", represents a step in the project's history, and each parent
774 represents an immediately preceding step.  Commits with more than one
775 parent represent merges of independent lines of development.
777 All objects are named by the SHA1 hash of their contents, normally
778 written as a string of 40 hex digits.  Such names are globally unique.
779 The entire history leading up to a commit can be vouched for by signing
780 just that commit.  A fourth object type, the tag, is provided for this
781 purpose.
783 When first created, objects are stored in individual files, but for
784 efficiency may later be compressed together into "pack files".
786 Named pointers called refs mark interesting points in history.  A ref
787 may contain the SHA1 name of an object or the name of another ref.  Refs
788 with names beginning `ref/head/` contain the SHA1 name of the most
789 recent commit (or "head") of a branch under development.  SHA1 names of
790 tags of interest are stored under `ref/tags/`.  A special ref named
791 `HEAD` contains the name of the currently checked-out branch.
793 The index file is initialized with a list of all paths and, for each
794 path, a blob object and a set of attributes.  The blob object represents
795 the contents of the file as of the head of the current branch.  The
796 attributes (last modified time, size, etc.) are taken from the
797 corresponding file in the working tree.  Subsequent changes to the
798 working tree can be found by comparing these attributes.  The index may
799 be updated with new content, and new commits may be created from the
800 content stored in the index.
802 The index is also capable of storing multiple entries (called "stages")
803 for a given pathname.  These stages are used to hold the various
804 unmerged version of a file when a merge is in progress.
806 Authors
807 -------
808 Git was started by Linus Torvalds, and is currently maintained by Junio
809 C Hamano. Numerous contributions have come from the git mailing list
810 <git@vger.kernel.org>. For a more complete list of contributors, see
811 http://git-scm.com/about. If you have a clone of git.git itself, the
812 output of linkgit:git-shortlog[1] and linkgit:git-blame[1] can show you
813 the authors for specific parts of the project.
815 Reporting Bugs
816 --------------
818 Report bugs to the Git mailing list <git@vger.kernel.org> where the
819 development and maintenance is primarily done.  You do not have to be
820 subscribed to the list to send a message there.
822 SEE ALSO
823 --------
824 linkgit:gittutorial[7], linkgit:gittutorial-2[7],
825 link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7],
826 linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
827 linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
828 linkgit:gitworkflows[7]
832 Part of the linkgit:git[1] suite