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