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