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