]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git.txt
Merge branch 'maint-1.6.5' into maint
[thirdparty/git.git] / Documentation / git.txt
CommitLineData
9e1f0a85 1git(1)
2cf565c5 2======
2cf565c5
DG
3
4NAME
5----
6git - the stupid content tracker
7
8
9SYNOPSIS
10--------
8b70004b 11[verse]
89a56bfb 12'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
b0fa7ab5 13 [-p|--paginate|--no-pager] [--no-replace-objects]
892c41b9
ML
14 [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
15 [--help] COMMAND [ARGS]
2cf565c5
DG
16
17DESCRIPTION
18-----------
23091e95
BF
19Git 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
6998e4db 23See linkgit:gittutorial[7] to get started, then see
23091e95
BF
24link:everyday.html[Everyday Git] for a useful minimum set of commands, and
25"man git-commandname" for documentation of each command. CVS users may
6998e4db
JN
26also want to read linkgit:gitcvs-migration[7]. See
27the link:user-manual.html[Git User's Manual] for a more in-depth
a1dc34fa 28introduction.
cb22bc44 29
4514ad4f 30The COMMAND is either a name of a Git command (see below) or an alias
5162e697 31as defined in the configuration file (see linkgit:git-config[1]).
4514ad4f 32
34b604af
JA
33Formatted and hyperlinked version of the latest git
34documentation can be viewed at
35`http://www.kernel.org/pub/software/scm/git/docs/`.
36
26cfcfbf
JH
37ifdef::stalenotes[]
38[NOTE]
39============
26cfcfbf 40
2ff3f61a
JH
41You 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:
43a8e4fe 45
9504f3d3 46* link:v1.6.6.1/git.html[documentation for release 1.6.6.1]
902f2353
JH
47
48* release notes for
9504f3d3 49 link:RelNotes-1.6.6.1.txt[1.6.6.1],
902f2353
JH
50 link:RelNotes-1.6.6.txt[1.6.6].
51
35eabd15 52* link:v1.6.5.8/git.html[documentation for release 1.6.5.8]
78d553b7
JH
53
54* release notes for
35eabd15 55 link:RelNotes-1.6.5.8.txt[1.6.5.8],
527b9d70 56 link:RelNotes-1.6.5.7.txt[1.6.5.7],
9861b644 57 link:RelNotes-1.6.5.6.txt[1.6.5.6],
aa031314 58 link:RelNotes-1.6.5.5.txt[1.6.5.5],
eefe19fb 59 link:RelNotes-1.6.5.4.txt[1.6.5.4],
080cbc12 60 link:RelNotes-1.6.5.3.txt[1.6.5.3],
6c0efa2a 61 link:RelNotes-1.6.5.2.txt[1.6.5.2],
b142da2a 62 link:RelNotes-1.6.5.1.txt[1.6.5.1],
78d553b7
JH
63 link:RelNotes-1.6.5.txt[1.6.5].
64
cb572206 65* link:v1.6.4.4/git.html[documentation for release 1.6.4.4]
0a53e9dd
JH
66
67* release notes for
cb572206 68 link:RelNotes-1.6.4.4.txt[1.6.4.4],
7fb6bcff 69 link:RelNotes-1.6.4.3.txt[1.6.4.3],
82c3e210 70 link:RelNotes-1.6.4.2.txt[1.6.4.2],
d9b9784f 71 link:RelNotes-1.6.4.1.txt[1.6.4.1],
0a53e9dd
JH
72 link:RelNotes-1.6.4.txt[1.6.4].
73
441b40d8 74* link:v1.6.3.4/git.html[documentation for release 1.6.3.4]
6096d759
JH
75
76* release notes for
441b40d8 77 link:RelNotes-1.6.3.4.txt[1.6.3.4],
e16a4779 78 link:RelNotes-1.6.3.3.txt[1.6.3.3],
6096d759
JH
79 link:RelNotes-1.6.3.2.txt[1.6.3.2],
80 link:RelNotes-1.6.3.1.txt[1.6.3.1],
81 link:RelNotes-1.6.3.txt[1.6.3].
a95148de
JH
82
83* release notes for
f01f1099
JH
84 link:RelNotes-1.6.2.5.txt[1.6.2.5],
85 link:RelNotes-1.6.2.4.txt[1.6.2.4],
c965c029 86 link:RelNotes-1.6.2.3.txt[1.6.2.3],
54a47493 87 link:RelNotes-1.6.2.2.txt[1.6.2.2],
de769780 88 link:RelNotes-1.6.2.1.txt[1.6.2.1],
a95148de
JH
89 link:RelNotes-1.6.2.txt[1.6.2].
90
621f1b4b 91* link:v1.6.1.3/git.html[documentation for release 1.6.1.3]
8104ebfe
JH
92
93* release notes for
621f1b4b
JH
94 link:RelNotes-1.6.1.3.txt[1.6.1.3],
95 link:RelNotes-1.6.1.2.txt[1.6.1.2],
c42b1ad9 96 link:RelNotes-1.6.1.1.txt[1.6.1.1],
8104ebfe
JH
97 link:RelNotes-1.6.1.txt[1.6.1].
98
efe05b01 99* link:v1.6.0.6/git.html[documentation for release 1.6.0.6]
ea02eef0
JH
100
101* release notes for
efe05b01 102 link:RelNotes-1.6.0.6.txt[1.6.0.6],
f371d3ea 103 link:RelNotes-1.6.0.5.txt[1.6.0.5],
171d7661
JH
104 link:RelNotes-1.6.0.4.txt[1.6.0.4],
105 link:RelNotes-1.6.0.3.txt[1.6.0.3],
97a7a82f
JH
106 link:RelNotes-1.6.0.2.txt[1.6.0.2],
107 link:RelNotes-1.6.0.1.txt[1.6.0.1],
ea02eef0
JH
108 link:RelNotes-1.6.0.txt[1.6.0].
109
efe05b01 110* link:v1.5.6.6/git.html[documentation for release 1.5.6.6]
e449f105
JH
111
112* release notes for
efe05b01 113 link:RelNotes-1.5.6.6.txt[1.5.6.6],
781c1834 114 link:RelNotes-1.5.6.5.txt[1.5.6.5],
09651dd8
JH
115 link:RelNotes-1.5.6.4.txt[1.5.6.4],
116 link:RelNotes-1.5.6.3.txt[1.5.6.3],
117 link:RelNotes-1.5.6.2.txt[1.5.6.2],
118 link:RelNotes-1.5.6.1.txt[1.5.6.1],
e636106c 119 link:RelNotes-1.5.6.txt[1.5.6].
e449f105 120
efe05b01 121* link:v1.5.5.6/git.html[documentation for release 1.5.5.6]
1d2375dd
JH
122
123* release notes for
efe05b01
JH
124 link:RelNotes-1.5.5.6.txt[1.5.5.6],
125 link:RelNotes-1.5.5.5.txt[1.5.5.5],
7064ca51 126 link:RelNotes-1.5.5.4.txt[1.5.5.4],
28bc3022 127 link:RelNotes-1.5.5.3.txt[1.5.5.3],
2d3922dc 128 link:RelNotes-1.5.5.2.txt[1.5.5.2],
66aaa2fc 129 link:RelNotes-1.5.5.1.txt[1.5.5.1],
1d2375dd
JH
130 link:RelNotes-1.5.5.txt[1.5.5].
131
efe05b01 132* link:v1.5.4.7/git.html[documentation for release 1.5.4.7]
6ce8e44a
JH
133
134* release notes for
efe05b01
JH
135 link:RelNotes-1.5.4.7.txt[1.5.4.7],
136 link:RelNotes-1.5.4.6.txt[1.5.4.6],
803d5158 137 link:RelNotes-1.5.4.5.txt[1.5.4.5],
ad416ed4 138 link:RelNotes-1.5.4.4.txt[1.5.4.4],
923d44ae 139 link:RelNotes-1.5.4.3.txt[1.5.4.3],
cf5c51ef 140 link:RelNotes-1.5.4.2.txt[1.5.4.2],
ecb879f8 141 link:RelNotes-1.5.4.1.txt[1.5.4.1],
6ce8e44a
JH
142 link:RelNotes-1.5.4.txt[1.5.4].
143
e708af6e 144* link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
5587cac2
JH
145
146* release notes for
e708af6e 147 link:RelNotes-1.5.3.8.txt[1.5.3.8],
b52e985a 148 link:RelNotes-1.5.3.7.txt[1.5.3.7],
4a44b9ea 149 link:RelNotes-1.5.3.6.txt[1.5.3.6],
afc05f9f 150 link:RelNotes-1.5.3.5.txt[1.5.3.5],
58ba4f6a 151 link:RelNotes-1.5.3.4.txt[1.5.3.4],
326df26d 152 link:RelNotes-1.5.3.3.txt[1.5.3.3],
077d6f72 153 link:RelNotes-1.5.3.2.txt[1.5.3.2],
8d863c98
JH
154 link:RelNotes-1.5.3.1.txt[1.5.3.1],
155 link:RelNotes-1.5.3.txt[1.5.3].
b6e4db6a 156
e636106c
JH
157* link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
158
aba170cd 159* release notes for
da899deb 160 link:RelNotes-1.5.2.5.txt[1.5.2.5],
baafd6e7 161 link:RelNotes-1.5.2.4.txt[1.5.2.4],
444649e5 162 link:RelNotes-1.5.2.3.txt[1.5.2.3],
3e48af38
JH
163 link:RelNotes-1.5.2.2.txt[1.5.2.2],
164 link:RelNotes-1.5.2.1.txt[1.5.2.1],
aba170cd
JH
165 link:RelNotes-1.5.2.txt[1.5.2].
166
167* link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
168
169* release notes for
170 link:RelNotes-1.5.1.6.txt[1.5.1.6],
171 link:RelNotes-1.5.1.5.txt[1.5.1.5],
2ff3f61a
JH
172 link:RelNotes-1.5.1.4.txt[1.5.1.4],
173 link:RelNotes-1.5.1.3.txt[1.5.1.3],
174 link:RelNotes-1.5.1.2.txt[1.5.1.2],
175 link:RelNotes-1.5.1.1.txt[1.5.1.1],
176 link:RelNotes-1.5.1.txt[1.5.1].
177
178* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
179
aba170cd
JH
180* release notes for
181 link:RelNotes-1.5.0.7.txt[1.5.0.7],
2ff3f61a
JH
182 link:RelNotes-1.5.0.6.txt[1.5.0.6],
183 link:RelNotes-1.5.0.5.txt[1.5.0.5],
184 link:RelNotes-1.5.0.3.txt[1.5.0.3],
185 link:RelNotes-1.5.0.2.txt[1.5.0.2],
186 link:RelNotes-1.5.0.1.txt[1.5.0.1],
187 link:RelNotes-1.5.0.txt[1.5.0].
188
189* documentation for release link:v1.4.4.4/git.html[1.4.4.4],
190 link:v1.3.3/git.html[1.3.3],
191 link:v1.2.6/git.html[1.2.6],
192 link:v1.0.13/git.html[1.0.13].
26cfcfbf
JH
193
194============
195
196endif::stalenotes[]
197
cb22bc44
AE
198OPTIONS
199-------
200--version::
a87cd02c 201 Prints the git suite version that the 'git' program came from.
cb22bc44
AE
202
203--help::
a87cd02c 204 Prints the synopsis and a list of the most commonly used
0f6f195b
CC
205 commands. If the option '--all' or '-a' is given then all
206 available commands are printed. If a git command is named this
207 option will bring up the manual page for that command.
45533d26
CC
208+
209Other options are available to control how the manual page is
5162e697 210displayed. See linkgit:git-help[1] for more information,
db5d6666
JN
211because `git --help ...` is converted internally into `git
212help ...`.
cb22bc44
AE
213
214--exec-path::
a87cd02c 215 Path to wherever your core git programs are installed.
cb22bc44 216 This can also be controlled by setting the GIT_EXEC_PATH
56992f76 217 environment variable. If no path is given, 'git' will print
cb22bc44
AE
218 the current setting and then exit.
219
89a56bfb
MH
220--html-path::
221 Print the path to wherever your git HTML documentation is installed
222 and exit.
223
3240240f
SB
224-p::
225--paginate::
6acbcb92
JS
226 Pipe all output into 'less' (or if set, $PAGER).
227
463a849d
MM
228--no-pager::
229 Do not pipe git output into a pager.
230
6acbcb92
JS
231--git-dir=<path>::
232 Set the path to the repository. This can also be controlled by
302cc11a
LY
233 setting the GIT_DIR environment variable. It can be an absolute
234 path or relative path to current working directory.
6acbcb92 235
892c41b9
ML
236--work-tree=<path>::
237 Set the path to the working tree. The value will not be
238 used in combination with repositories found automatically in
239 a .git directory (i.e. $GIT_DIR is not set).
240 This can also be controlled by setting the GIT_WORK_TREE
241 environment variable and the core.worktree configuration
302cc11a
LY
242 variable. It can be an absolute path or relative path to
243 the directory specified by --git-dir or GIT_DIR.
244 Note: If --git-dir or GIT_DIR are specified but none of
245 --work-tree, GIT_WORK_TREE and core.worktree is specified,
246 the current working directory is regarded as the top directory
247 of your working tree.
892c41b9 248
6acbcb92 249--bare::
9277d602
JH
250 Treat the repository as a bare repository. If GIT_DIR
251 environment is not set, it is set to the current working
252 directory.
253
b0fa7ab5
CC
254--no-replace-objects::
255 Do not use replacement refs to replace git objects. See
256 linkgit:git-replace[1] for more information.
257
9755afbd 258
23091e95
BF
259FURTHER DOCUMENTATION
260---------------------
9755afbd 261
23091e95
BF
262See the references above to get started using git. The following is
263probably more detail than necessary for a first-time user.
8db9307c 264
40dac517 265The link:user-manual.html#git-concepts[git concepts chapter of the
6998e4db 266user-manual] and linkgit:gitcore-tutorial[7] both provide
40dac517 267introductions to the underlying git architecture.
e6fc2346 268
801a011d
TR
269See linkgit:gitworkflows[7] for an overview of recommended workflows.
270
23091e95
BF
271See also the link:howto-index.html[howto] documents for some useful
272examples.
9755afbd 273
6998e4db
JN
274The internals are documented in the
275link:technical/api-index.html[GIT API documentation].
530e741c 276
23091e95
BF
277GIT COMMANDS
278------------
9755afbd 279
23091e95
BF
280We divide git into high level ("porcelain") commands and low level
281("plumbing") commands.
8b15e2fb 282
23091e95
BF
283High-level commands (porcelain)
284-------------------------------
285
286We separate the porcelain commands into the main commands and some
287ancillary user utilities.
288
289Main porcelain commands
290~~~~~~~~~~~~~~~~~~~~~~~
905197de 291
377e8139 292include::cmds-mainporcelain.txt[]
e31bb3bb 293
90933efb 294Ancillary Commands
23091e95 295~~~~~~~~~~~~~~~~~~
2f2de9b4
JH
296Manipulators:
297
377e8139 298include::cmds-ancillarymanipulators.txt[]
204ee6a9 299
90933efb 300Interrogators:
204ee6a9 301
377e8139 302include::cmds-ancillaryinterrogators.txt[]
7fc9d69f 303
89bf2077
JH
304
305Interacting with Others
306~~~~~~~~~~~~~~~~~~~~~~~
307
308These commands are to interact with foreign SCM and with other
309people via patch over e-mail.
310
311include::cmds-foreignscminterface.txt[]
312
313
b1f33d62
RR
314Low-level commands (plumbing)
315-----------------------------
316
317Although git includes its
318own porcelain layer, its low-level commands are sufficient to support
319development of alternative porcelains. Developers of such porcelains
5162e697
DM
320might start by reading about linkgit:git-update-index[1] and
321linkgit:git-read-tree[1].
b1f33d62 322
89bf2077
JH
323The interface (input, output, set of options and the semantics)
324to these low-level commands are meant to be a lot more stable
325than Porcelain level commands, because these commands are
326primarily for scripted use. The interface to Porcelain commands
327on the other hand are subject to change in order to improve the
328end user experience.
329
330The following description divides
331the low-level commands into commands that manipulate objects (in
b1f33d62
RR
332the repository, index, and working tree), commands that interrogate and
333compare objects, and commands that move objects and references between
334repositories.
335
89bf2077 336
b1f33d62
RR
337Manipulation commands
338~~~~~~~~~~~~~~~~~~~~~
b1f33d62 339
377e8139 340include::cmds-plumbingmanipulators.txt[]
b1f33d62
RR
341
342
343Interrogation commands
344~~~~~~~~~~~~~~~~~~~~~~
345
377e8139 346include::cmds-plumbinginterrogators.txt[]
b1f33d62
RR
347
348In general, the interrogate commands do not touch the files in
349the working tree.
350
351
352Synching repositories
353~~~~~~~~~~~~~~~~~~~~~
354
377e8139 355include::cmds-synchingrepositories.txt[]
b1f33d62 356
57f6ec02 357The following are helper commands used by the above; end users
89bf2077
JH
358typically do not use them directly.
359
360include::cmds-synchelpers.txt[]
361
362
363Internal helper commands
364~~~~~~~~~~~~~~~~~~~~~~~~
365
366These are internal helper commands used by other commands; end
367users typically do not use them directly.
368
369include::cmds-purehelpers.txt[]
370
b1f33d62 371
5773c9f2
JH
372Configuration Mechanism
373-----------------------
374
2fa090b6 375Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
5773c9f2 376is used to hold per-repository configuration options. It is a
addf88e4 377simple text file modeled after `.ini` format familiar to some
5773c9f2
JH
378people. Here is an example:
379
380------------
381#
2fa090b6 382# A '#' or ';' character indicates a comment.
5773c9f2
JH
383#
384
385; core variables
386[core]
387 ; Don't trust file modes
388 filemode = false
389
390; user identity
391[user]
392 name = "Junio C Hamano"
393 email = "junkio@twinsun.com"
394
395------------
396
397Various commands read from the configuration file and adjust
398their operation accordingly.
399
400
6c84e2e0 401Identifier Terminology
2cf565c5
DG
402----------------------
403<object>::
2fa090b6 404 Indicates the object name for any type of object.
2cf565c5
DG
405
406<blob>::
2fa090b6 407 Indicates a blob object name.
2cf565c5
DG
408
409<tree>::
2fa090b6 410 Indicates a tree object name.
2cf565c5
DG
411
412<commit>::
2fa090b6 413 Indicates a commit object name.
2cf565c5
DG
414
415<tree-ish>::
2fa090b6 416 Indicates a tree, commit or tag object name. A
6c84e2e0
DG
417 command that takes a <tree-ish> argument ultimately wants to
418 operate on a <tree> object but automatically dereferences
419 <commit> and <tag> objects that point at a <tree>.
2cf565c5 420
043d7605
TT
421<commit-ish>::
422 Indicates a commit or tag object name. A
423 command that takes a <commit-ish> argument ultimately wants to
424 operate on a <commit> object but automatically dereferences
425 <tag> objects that point at a <commit>.
426
2cf565c5
DG
427<type>::
428 Indicates that an object type is required.
2fa090b6 429 Currently one of: `blob`, `tree`, `commit`, or `tag`.
2cf565c5
DG
430
431<file>::
2fa090b6
JH
432 Indicates a filename - almost always relative to the
433 root of the tree structure `GIT_INDEX_FILE` describes.
2cf565c5 434
c1bdacf9
DG
435Symbolic Identifiers
436--------------------
90933efb 437Any git command accepting any <object> can also use the following
6c84e2e0 438symbolic notation:
c1bdacf9
DG
439
440HEAD::
2fa090b6
JH
441 indicates the head of the current branch (i.e. the
442 contents of `$GIT_DIR/HEAD`).
443
c1bdacf9 444<tag>::
2fa090b6
JH
445 a valid tag 'name'
446 (i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).
447
c1bdacf9 448<head>::
2fa090b6
JH
449 a valid head 'name'
450 (i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
451
d47107d8 452For a more complete list of ways to spell object names, see
5162e697 453"SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1].
d47107d8 454
c1bdacf9
DG
455
456File/Directory Structure
457------------------------
c1bdacf9 458
6998e4db 459Please see the linkgit:gitrepository-layout[5] document.
c1bdacf9 460
6998e4db 461Read linkgit:githooks[5] for more details about each hook.
6250ad1e 462
c1bdacf9 463Higher level SCMs may provide and manage additional information in the
2fa090b6 464`$GIT_DIR`.
c1bdacf9 465
a1d4aa74 466
2cf565c5
DG
467Terminology
468-----------
6998e4db 469Please see linkgit:gitglossary[7].
2cf565c5
DG
470
471
472Environment Variables
473---------------------
474Various git commands use the following environment variables:
475
c1bdacf9
DG
476The git Repository
477~~~~~~~~~~~~~~~~~~
478These environment variables apply to 'all' core git commands. Nb: it
479is worth noting that they may be used/overridden by SCMS sitting above
2fa090b6 480git so take care if using Cogito etc.
c1bdacf9
DG
481
482'GIT_INDEX_FILE'::
483 This environment allows the specification of an alternate
5f3aa197
LS
484 index file. If not specified, the default of `$GIT_DIR/index`
485 is used.
c1bdacf9
DG
486
487'GIT_OBJECT_DIRECTORY'::
488 If the object storage directory is specified via this
489 environment variable then the sha1 directories are created
490 underneath - otherwise the default `$GIT_DIR/objects`
491 directory is used.
492
493'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
494 Due to the immutable nature of git objects, old objects can be
495 archived into shared, read-only directories. This variable
80ba074f
JS
496 specifies a ":" separated (on Windows ";" separated) list
497 of git object directories which can be used to search for git
498 objects. New objects will not be written to these directories.
c1bdacf9
DG
499
500'GIT_DIR'::
2fa090b6
JH
501 If the 'GIT_DIR' environment variable is set then it
502 specifies a path to use instead of the default `.git`
503 for the base of the repository.
c1bdacf9 504
892c41b9
ML
505'GIT_WORK_TREE'::
506 Set the path to the working tree. The value will not be
507 used in combination with repositories found automatically in
508 a .git directory (i.e. $GIT_DIR is not set).
509 This can also be controlled by the '--work-tree' command line
510 option and the core.worktree configuration variable.
511
0454dd93
DR
512'GIT_CEILING_DIRECTORIES'::
513 This should be a colon-separated list of absolute paths.
514 If set, it is a list of directories that git should not chdir
515 up into while looking for a repository directory.
516 It will not exclude the current working directory or
517 a GIT_DIR set on the command line or in the environment.
518 (Useful for excluding slow-loading network directories.)
519
c1bdacf9
DG
520git Commits
521~~~~~~~~~~~
522'GIT_AUTHOR_NAME'::
523'GIT_AUTHOR_EMAIL'::
524'GIT_AUTHOR_DATE'::
525'GIT_COMMITTER_NAME'::
526'GIT_COMMITTER_EMAIL'::
4e58bf97 527'GIT_COMMITTER_DATE'::
28a94f88 528'EMAIL'::
5162e697 529 see linkgit:git-commit-tree[1]
c1bdacf9
DG
530
531git Diffs
532~~~~~~~~~
d81ed1b5 533'GIT_DIFF_OPTS'::
fde97d8a
SE
534 Only valid setting is "--unified=??" or "-u??" to set the
535 number of context lines shown when a unified diff is created.
536 This takes precedence over any "-U" or "--unified" option
537 value passed on the git diff command line.
538
d81ed1b5 539'GIT_EXTERNAL_DIFF'::
fde97d8a
SE
540 When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
541 program named by it is called, instead of the diff invocation
542 described above. For a path that is added, removed, or modified,
543 'GIT_EXTERNAL_DIFF' is called with 7 parameters:
544
545 path old-file old-hex old-mode new-file new-hex new-mode
546+
547where:
548
549 <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
550 contents of <old|new>,
551 <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
552 <old|new>-mode:: are the octal representation of the file modes.
553
554+
555The file parameters can point at the user's working file
556(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
557when a new file is added), or a temporary file (e.g. `old-file` in the
558index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the
559temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
560+
561For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
562parameter, <path>.
2cf565c5 563
575ba9d6
ML
564other
565~~~~~
dbddb714
JN
566'GIT_MERGE_VERBOSITY'::
567 A number controlling the amount of output shown by
568 the recursive merge strategy. Overrides merge.verbosity.
5162e697 569 See linkgit:git-merge[1]
dbddb714 570
c27d205a 571'GIT_PAGER'::
a7738c77
SG
572 This environment variable overrides `$PAGER`. If it is set
573 to an empty string or to the value "cat", git will not launch
ab54cd6c
JN
574 a pager. See also the `core.pager` option in
575 linkgit:git-config[1].
c27d205a 576
d5538b41 577'GIT_SSH'::
ba020ef5
JN
578 If this environment variable is set then 'git-fetch'
579 and 'git-push' will use this command instead
2fd02c92 580 of 'ssh' when they need to connect to a remote system.
483bc4f0 581 The '$GIT_SSH' command will be given exactly two arguments:
d5538b41
SP
582 the 'username@host' (or just 'host') from the URL and the
583 shell command to execute on that remote system.
584+
585To pass options to the program that you want to list in GIT_SSH
586you will need to wrap the program and options into a shell script,
587then set GIT_SSH to refer to the shell script.
588+
589Usually it is easier to configure any desired options through your
590personal `.ssh/config` file. Please consult your ssh documentation
591for further details.
592
06f59e9f
TT
593'GIT_FLUSH'::
594 If this environment variable is set to "1", then commands such
ba020ef5
JN
595 as 'git-blame' (in incremental mode), 'git-rev-list', 'git-log',
596 and 'git-whatchanged' will force a flush of the output stream
06f59e9f
TT
597 after each commit-oriented record have been flushed. If this
598 variable is set to "0", the output of these commands will be done
599 using completely buffered I/O. If this environment variable is
600 not set, git will choose buffered or record-oriented flushing
601 based on whether stdout appears to be redirected to a file or not.
602
575ba9d6 603'GIT_TRACE'::
2886bdb1
CC
604 If this variable is set to "1", "2" or "true" (comparison
605 is case insensitive), git will print `trace:` messages on
575ba9d6
ML
606 stderr telling about alias expansion, built-in command
607 execution and external command execution.
2886bdb1
CC
608 If this variable is set to an integer value greater than 1
609 and lower than 10 (strictly) then git will interpret this
610 value as an open file descriptor and will try to write the
611 trace messages into this file descriptor.
612 Alternatively, if this variable is set to an absolute path
613 (starting with a '/' character), git will interpret this
614 as a file path and will try to write the trace messages
615 into it.
575ba9d6 616
8db9307c
JH
617Discussion[[Discussion]]
618------------------------
40dac517
BF
619
620More detail on the following is available from the
621link:user-manual.html#git-concepts[git concepts chapter of the
6998e4db 622user-manual] and linkgit:gitcore-tutorial[7].
40dac517
BF
623
624A git project normally consists of a working directory with a ".git"
625subdirectory at the top level. The .git directory contains, among other
626things, a compressed object database representing the complete history
627of the project, an "index" file which links that history to the current
628contents of the working tree, and named pointers into that history such
629as tags and branch heads.
630
631The object database contains objects of three main types: blobs, which
632hold file data; trees, which point to blobs and other trees to build up
02ff6250 633directory hierarchies; and commits, which each reference a single tree
40dac517
BF
634and some number of parent commits.
635
636The commit, equivalent to what other systems call a "changeset" or
637"version", represents a step in the project's history, and each parent
638represents an immediately preceding step. Commits with more than one
639parent represent merges of independent lines of development.
640
641All objects are named by the SHA1 hash of their contents, normally
642written as a string of 40 hex digits. Such names are globally unique.
643The entire history leading up to a commit can be vouched for by signing
644just that commit. A fourth object type, the tag, is provided for this
645purpose.
646
647When first created, objects are stored in individual files, but for
648efficiency may later be compressed together into "pack files".
649
650Named pointers called refs mark interesting points in history. A ref
651may contain the SHA1 name of an object or the name of another ref. Refs
652with names beginning `ref/head/` contain the SHA1 name of the most
02ff6250 653recent commit (or "head") of a branch under development. SHA1 names of
40dac517
BF
654tags of interest are stored under `ref/tags/`. A special ref named
655`HEAD` contains the name of the currently checked-out branch.
656
657The index file is initialized with a list of all paths and, for each
658path, a blob object and a set of attributes. The blob object represents
659the contents of the file as of the head of the current branch. The
660attributes (last modified time, size, etc.) are taken from the
661corresponding file in the working tree. Subsequent changes to the
662working tree can be found by comparing these attributes. The index may
663be updated with new content, and new commits may be created from the
664content stored in the index.
665
666The index is also capable of storing multiple entries (called "stages")
667for a given pathname. These stages are used to hold the various
668unmerged version of a file when a merge is in progress.
6c84e2e0 669
cb22bc44
AE
670Authors
671-------
9755afbd 672* git's founding father is Linus Torvalds <torvalds@osdl.org>.
947ad2e1 673* The current git nurse is Junio C Hamano <gitster@pobox.com>.
0240e21a 674* The git potty was written by Andreas Ericsson <ae@op5.se>.
9755afbd 675* General upbringing is handled by the git-list <git@vger.kernel.org>.
2cf565c5
DG
676
677Documentation
678--------------
9755afbd
JH
679The documentation for git suite was started by David Greaves
680<david@dgreaves.com>, and later enhanced greatly by the
681contributors on the git-list <git@vger.kernel.org>.
2cf565c5 682
497c8331
CC
683SEE ALSO
684--------
685linkgit:gittutorial[7], linkgit:gittutorial-2[7],
5cbef01a 686link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7],
497c8331 687linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
801a011d
TR
688linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
689linkgit:gitworkflows[7]
497c8331 690
2cf565c5
DG
691GIT
692---
9e1f0a85 693Part of the linkgit:git[1] suite