]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git.txt
Start the 2.46 cycle
[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]
6b52f48b 12'git' [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]
68e4b552 13 [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
7213c288 14 [-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare]
d49483f0 15 [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
4002ec3d 16 [--config-env=<name>=<envvar>] <command> [<args>]
2cf565c5
DG
17
18DESCRIPTION
19-----------
23091e95
BF
20Git is a fast, scalable, distributed revision control system with an
21unusually rich command set that provides both high-level operations
22and full access to internals.
23
6998e4db 24See linkgit:gittutorial[7] to get started, then see
673151a9 25linkgit:giteveryday[7] for a useful minimum set of
7687ae98
JH
26commands. The link:user-manual.html[Git User's Manual] has a more
27in-depth introduction.
cb22bc44 28
7687ae98 29After you mastered the basic concepts, you can come back to this
2de9b711
TA
30page to learn what commands Git offers. You can learn more about
31individual Git commands with "git help command". linkgit:gitcli[7]
06ab60c0 32manual page gives you an overview of the command-line command syntax.
4514ad4f 33
f7935827 34A formatted and hyperlinked copy of the latest Git documentation
e2dca456
PO
35can be viewed at https://git.github.io/htmldocs/git.html
36or https://git-scm.com/docs.
34b604af 37
26cfcfbf 38
cb22bc44
AE
39OPTIONS
40-------
6b52f48b 41-v::
cb22bc44 42--version::
2de9b711 43 Prints the Git suite version that the 'git' program came from.
b6d8887d 44+
82a57cd1 45This option is internally converted to `git version ...` and accepts
b6d8887d
MA
46the same options as the linkgit:git-version[1] command. If `--help` is
47also given, it takes precedence over `--version`.
cb22bc44 48
6b52f48b 49-h::
cb22bc44 50--help::
a87cd02c 51 Prints the synopsis and a list of the most commonly used
bcf9626a 52 commands. If the option `--all` or `-a` is given then all
2de9b711 53 available commands are printed. If a Git command is named this
0f6f195b 54 option will bring up the manual page for that command.
45533d26
CC
55+
56Other options are available to control how the manual page is
5162e697 57displayed. See linkgit:git-help[1] for more information,
db5d6666
JN
58because `git --help ...` is converted internally into `git
59help ...`.
cb22bc44 60
44e1e4d6
NR
61-C <path>::
62 Run as if git was started in '<path>' instead of the current working
63 directory. When multiple `-C` options are given, each subsequent
64 non-absolute `-C <path>` is interpreted relative to the preceding `-C
1a64e07d
SG
65 <path>`. If '<path>' is present but empty, e.g. `-C ""`, then the
66 current working directory is left unchanged.
44e1e4d6
NR
67+
68This option affects options that expect path name like `--git-dir` and
69`--work-tree` in that their interpretations of the path names would be
70made relative to the working directory caused by the `-C` option. For
71example the following invocations are equivalent:
72
73 git --git-dir=a.git --work-tree=b -C c status
74 git --git-dir=c/a.git --work-tree=c/b status
75
8b1fa778
AR
76-c <name>=<value>::
77 Pass a configuration parameter to the command. The value
78 given will override values from configuration files.
79 The <name> is expected in the same format as listed by
80 'git config' (subkeys separated by dots).
a789ca70
JH
81+
82Note that omitting the `=` in `git -c foo.bar ...` is allowed and sets
83`foo.bar` to the boolean true value (just like `[foo]bar` would in a
84config file). Including the equals but with an empty value (like `git -c
5e633326 85foo.bar= ...`) sets `foo.bar` to the empty string which `git config
ed3bb3df 86--type=bool` will convert to `false`.
8b1fa778 87
ce81b1da
PS
88--config-env=<name>=<envvar>::
89 Like `-c <name>=<value>`, give configuration variable
90 '<name>' a value, where <envvar> is the name of an
91 environment variable from which to retrieve the value. Unlike
92 `-c` there is no shortcut for directly setting the value to an
93 empty string, instead the environment variable itself must be
94 set to the empty string. It is an error if the `<envvar>` does not exist
95 in the environment. `<envvar>` may not contain an equals sign
83171ede 96 to avoid ambiguity with `<name>` containing one.
ce81b1da
PS
97+
98This is useful for cases where you want to pass transitory
97509a34
ŠN
99configuration options to git, but are doing so on operating systems
100where other processes might be able to read your command line
101(e.g. `/proc/self/cmdline`), but not your environment
ce81b1da
PS
102(e.g. `/proc/self/environ`). That behavior is the default on
103Linux, but may not be on your system.
104+
105Note that this might add security for variables such as
106`http.extraHeader` where the sensitive information is part of
107the value, but not e.g. `url.<base>.insteadOf` where the
108sensitive information can be part of the key.
109
62b4698e 110--exec-path[=<path>]::
2de9b711 111 Path to wherever your core Git programs are installed.
cb22bc44 112 This can also be controlled by setting the GIT_EXEC_PATH
56992f76 113 environment variable. If no path is given, 'git' will print
cb22bc44
AE
114 the current setting and then exit.
115
89a56bfb 116--html-path::
2de9b711 117 Print the path, without trailing slash, where Git's HTML
239b5ed9 118 documentation is installed and exit.
89a56bfb 119
f2dd8c37 120--man-path::
239b5ed9 121 Print the manpath (see `man(1)`) for the man pages for
2de9b711 122 this version of Git and exit.
f2dd8c37
JS
123
124--info-path::
239b5ed9 125 Print the path where the Info files documenting this
2de9b711 126 version of Git are installed and exit.
89a56bfb 127
3240240f
SB
128-p::
129--paginate::
06300d97
JN
130 Pipe all output into 'less' (or if set, $PAGER) if standard
131 output is a terminal. This overrides the `pager.<cmd>`
132 configuration options (see the "Configuration Mechanism" section
133 below).
6acbcb92 134
7213c288 135-P::
463a849d 136--no-pager::
2de9b711 137 Do not pipe Git output into a pager.
463a849d 138
6acbcb92 139--git-dir=<path>::
d82ad549
HW
140 Set the path to the repository (".git" directory). This can also be
141 controlled by setting the `GIT_DIR` environment variable. It can be
142 an absolute path or relative path to current working directory.
143+
144Specifying the location of the ".git" directory using this
145option (or `GIT_DIR` environment variable) turns off the
146repository discovery that tries to find a directory with
147".git" subdirectory (which is how the repository and the
148top-level of the working tree are discovered), and tells Git
149that you are at the top level of the working tree. If you
150are not at the top-level directory of the working tree, you
151should tell Git where the top-level of the working tree is,
152with the `--work-tree=<path>` option (or `GIT_WORK_TREE`
153environment variable)
154+
155If you just want to run git as if it was started in `<path>` then use
156`git -C <path>`.
6acbcb92 157
892c41b9 158--work-tree=<path>::
ea472c1e
JH
159 Set the path to the working tree. It can be an absolute path
160 or a path relative to the current working directory.
892c41b9
ML
161 This can also be controlled by setting the GIT_WORK_TREE
162 environment variable and the core.worktree configuration
ea472c1e
JH
163 variable (see core.worktree in linkgit:git-config[1] for a
164 more detailed discussion).
892c41b9 165
d49483f0 166--namespace=<path>::
2de9b711 167 Set the Git namespace. See linkgit:gitnamespaces[7] for more
d49483f0
JT
168 details. Equivalent to setting the `GIT_NAMESPACE` environment
169 variable.
170
6acbcb92 171--bare::
9277d602
JH
172 Treat the repository as a bare repository. If GIT_DIR
173 environment is not set, it is set to the current working
174 directory.
175
b0fa7ab5 176--no-replace-objects::
b3806f76
JH
177 Do not use replacement refs to replace Git objects.
178 This is equivalent to exporting the `GIT_NO_REPLACE_OBJECTS`
179 environment variable with any value.
180 See linkgit:git-replace[1] for more information.
b0fa7ab5 181
c784b0a5
JH
182--no-lazy-fetch::
183 Do not fetch missing objects from the promisor remote on
184 demand. Useful together with `git cat-file -e <object>` to
185 see if the object is locally available.
e6d5479e
JH
186 This is equivalent to setting the `GIT_NO_LAZY_FETCH`
187 environment variable to `1`.
b0fa7ab5 188
823ab40f 189--literal-pathspecs::
a16bf9dd
NTND
190 Treat pathspecs literally (i.e. no globbing, no pathspec magic).
191 This is equivalent to setting the `GIT_LITERAL_PATHSPECS` environment
823ab40f
JK
192 variable to `1`.
193
6fb02165 194--glob-pathspecs::
bd30c2e4
NTND
195 Add "glob" magic to all pathspec. This is equivalent to setting
196 the `GIT_GLOB_PATHSPECS` environment variable to `1`. Disabling
197 globbing on individual pathspecs can be done using pathspec
198 magic ":(literal)"
199
6fb02165 200--noglob-pathspecs::
bd30c2e4
NTND
201 Add "literal" magic to all pathspec. This is equivalent to setting
202 the `GIT_NOGLOB_PATHSPECS` environment variable to `1`. Enabling
203 globbing on individual pathspecs can be done using pathspec
204 magic ":(glob)"
9755afbd 205
6fb02165 206--icase-pathspecs::
93d93537
NTND
207 Add "icase" magic to all pathspec. This is equivalent to setting
208 the `GIT_ICASE_PATHSPECS` environment variable to `1`.
9755afbd 209
27344d6a
JK
210--no-optional-locks::
211 Do not perform optional operations that require locks. This is
212 equivalent to setting the `GIT_OPTIONAL_LOCKS` to `0`.
213
51e846e6 214--list-cmds=<group>[,<group>...]::
0089521c
NTND
215 List commands by group. This is an internal/experimental
216 option and may change or be removed in the future. Supported
217 groups are: builtins, parseopt (builtin commands that use
6bb2dc0b 218 parse-options), main (all commands in libexec directory),
3c777767 219 others (all other commands in `$PATH` that have git- prefix),
e11dca10 220 list-<category> (see categories in command-list.txt),
6532f374
NTND
221 nohelpers (exclude helper commands), alias and config
222 (retrieve command list from config variable completion.commands)
0089521c 223
44451a2e
JC
224--attr-source=<tree-ish>::
225 Read gitattributes from <tree-ish> instead of the worktree. See
226 linkgit:gitattributes[5]. This is equivalent to setting the
227 `GIT_ATTR_SOURCE` environment variable.
228
23091e95
BF
229GIT COMMANDS
230------------
9755afbd 231
2de9b711 232We divide Git into high level ("porcelain") commands and low level
23091e95 233("plumbing") commands.
8b15e2fb 234
23091e95
BF
235High-level commands (porcelain)
236-------------------------------
237
238We separate the porcelain commands into the main commands and some
239ancillary user utilities.
240
241Main porcelain commands
242~~~~~~~~~~~~~~~~~~~~~~~
905197de 243
377e8139 244include::cmds-mainporcelain.txt[]
e31bb3bb 245
90933efb 246Ancillary Commands
23091e95 247~~~~~~~~~~~~~~~~~~
2f2de9b4
JH
248Manipulators:
249
377e8139 250include::cmds-ancillarymanipulators.txt[]
204ee6a9 251
90933efb 252Interrogators:
204ee6a9 253
377e8139 254include::cmds-ancillaryinterrogators.txt[]
7fc9d69f 255
89bf2077
JH
256
257Interacting with Others
258~~~~~~~~~~~~~~~~~~~~~~~
259
260These commands are to interact with foreign SCM and with other
261people via patch over e-mail.
262
263include::cmds-foreignscminterface.txt[]
264
46e91b66
NTND
265Reset, restore and revert
266~~~~~~~~~~~~~~~~~~~~~~~~~
267There are three commands with similar names: `git reset`,
268`git restore` and `git revert`.
269
270* linkgit:git-revert[1] is about making a new commit that reverts the
271 changes made by other commits.
272
273* linkgit:git-restore[1] is about restoring files in the working tree
274 from either the index or another commit. This command does not
275 update your branch. The command can also be used to restore files in
276 the index from another commit.
277
278* linkgit:git-reset[1] is about updating your branch, moving the tip
279 in order to add or remove commits from the branch. This operation
280 changes the commit history.
281+
282`git reset` can also be used to restore the index, overlapping with
283`git restore`.
284
89bf2077 285
b1f33d62
RR
286Low-level commands (plumbing)
287-----------------------------
288
2de9b711 289Although Git includes its
b1f33d62
RR
290own porcelain layer, its low-level commands are sufficient to support
291development of alternative porcelains. Developers of such porcelains
5162e697
DM
292might start by reading about linkgit:git-update-index[1] and
293linkgit:git-read-tree[1].
b1f33d62 294
89bf2077
JH
295The interface (input, output, set of options and the semantics)
296to these low-level commands are meant to be a lot more stable
297than Porcelain level commands, because these commands are
298primarily for scripted use. The interface to Porcelain commands
299on the other hand are subject to change in order to improve the
300end user experience.
301
302The following description divides
303the low-level commands into commands that manipulate objects (in
b1f33d62
RR
304the repository, index, and working tree), commands that interrogate and
305compare objects, and commands that move objects and references between
306repositories.
307
89bf2077 308
b1f33d62
RR
309Manipulation commands
310~~~~~~~~~~~~~~~~~~~~~
b1f33d62 311
377e8139 312include::cmds-plumbingmanipulators.txt[]
b1f33d62
RR
313
314
315Interrogation commands
316~~~~~~~~~~~~~~~~~~~~~~
317
377e8139 318include::cmds-plumbinginterrogators.txt[]
b1f33d62
RR
319
320In general, the interrogate commands do not touch the files in
321the working tree.
322
323
031fd4b9
EN
324Syncing repositories
325~~~~~~~~~~~~~~~~~~~~
b1f33d62 326
377e8139 327include::cmds-synchingrepositories.txt[]
b1f33d62 328
57f6ec02 329The following are helper commands used by the above; end users
89bf2077
JH
330typically do not use them directly.
331
332include::cmds-synchelpers.txt[]
333
334
335Internal helper commands
336~~~~~~~~~~~~~~~~~~~~~~~~
337
338These are internal helper commands used by other commands; end
339users typically do not use them directly.
340
341include::cmds-purehelpers.txt[]
342
f442f28a
PB
343Guides
344------
345
346The following documentation pages are guides about Git concepts.
347
348include::cmds-guide.txt[]
349
d976c510
ÆAB
350Repository, command and file interfaces
351---------------------------------------
352
353This documentation discusses repository and command interfaces which
354users are expected to interact with directly. See `--user-formats` in
72991ff5 355linkgit:git-help[1] for more details on the criteria.
d976c510
ÆAB
356
357include::cmds-userinterfaces.txt[]
b1f33d62 358
844739ba
ÆAB
359File formats, protocols and other developer interfaces
360------------------------------------------------------
361
362This documentation discusses file formats, over-the-wire protocols and
363other git developer interfaces. See `--developer-interfaces` in
364linkgit:git-help[1].
365
366include::cmds-developerinterfaces.txt[]
b1f33d62 367
5773c9f2
JH
368Configuration Mechanism
369-----------------------
370
c0179c0d
MM
371Git uses a simple text format to store customizations that are per
372repository and are per user. Such a configuration file may look
373like this:
5773c9f2
JH
374
375------------
376#
2fa090b6 377# A '#' or ';' character indicates a comment.
5773c9f2
JH
378#
379
380; core variables
381[core]
382 ; Don't trust file modes
383 filemode = false
384
385; user identity
386[user]
387 name = "Junio C Hamano"
c0179c0d 388 email = "gitster@pobox.com"
5773c9f2
JH
389
390------------
391
392Various commands read from the configuration file and adjust
06300d97 393their operation accordingly. See linkgit:git-config[1] for a
c0179c0d 394list and more details about the configuration mechanism.
5773c9f2
JH
395
396
6c84e2e0 397Identifier Terminology
2cf565c5
DG
398----------------------
399<object>::
2fa090b6 400 Indicates the object name for any type of object.
2cf565c5
DG
401
402<blob>::
2fa090b6 403 Indicates a blob object name.
2cf565c5
DG
404
405<tree>::
2fa090b6 406 Indicates a tree object name.
2cf565c5
DG
407
408<commit>::
2fa090b6 409 Indicates a commit object name.
2cf565c5
DG
410
411<tree-ish>::
2fa090b6 412 Indicates a tree, commit or tag object name. A
6c84e2e0
DG
413 command that takes a <tree-ish> argument ultimately wants to
414 operate on a <tree> object but automatically dereferences
415 <commit> and <tag> objects that point at a <tree>.
2cf565c5 416
043d7605
TT
417<commit-ish>::
418 Indicates a commit or tag object name. A
419 command that takes a <commit-ish> argument ultimately wants to
420 operate on a <commit> object but automatically dereferences
421 <tag> objects that point at a <commit>.
422
2cf565c5
DG
423<type>::
424 Indicates that an object type is required.
2fa090b6 425 Currently one of: `blob`, `tree`, `commit`, or `tag`.
2cf565c5
DG
426
427<file>::
2fa090b6
JH
428 Indicates a filename - almost always relative to the
429 root of the tree structure `GIT_INDEX_FILE` describes.
2cf565c5 430
c1bdacf9
DG
431Symbolic Identifiers
432--------------------
2de9b711 433Any Git command accepting any <object> can also use the following
6c84e2e0 434symbolic notation:
c1bdacf9
DG
435
436HEAD::
0abcfbff 437 indicates the head of the current branch.
2fa090b6 438
c1bdacf9 439<tag>::
2fa090b6 440 a valid tag 'name'
0abcfbff 441 (i.e. a `refs/tags/<tag>` reference).
2fa090b6 442
c1bdacf9 443<head>::
2fa090b6 444 a valid head 'name'
0abcfbff 445 (i.e. a `refs/heads/<head>` reference).
2fa090b6 446
d47107d8 447For a more complete list of ways to spell object names, see
9d83e382 448"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
d47107d8 449
c1bdacf9
DG
450
451File/Directory Structure
452------------------------
c1bdacf9 453
6998e4db 454Please see the linkgit:gitrepository-layout[5] document.
c1bdacf9 455
6998e4db 456Read linkgit:githooks[5] for more details about each hook.
6250ad1e 457
c1bdacf9 458Higher level SCMs may provide and manage additional information in the
2fa090b6 459`$GIT_DIR`.
c1bdacf9 460
a1d4aa74 461
2cf565c5
DG
462Terminology
463-----------
6998e4db 464Please see linkgit:gitglossary[7].
2cf565c5
DG
465
466
467Environment Variables
468---------------------
80f0b3f3
JH
469Various Git commands pay attention to environment variables and change
470their behavior. The environment variables marked as "Boolean" take
471their values the same way as Boolean valued configuration variables, e.g.
472"true", "yes", "on" and positive numbers are taken as "yes".
473
474Here are the variables:
2cf565c5 475
2de9b711 476The Git Repository
c1bdacf9 477~~~~~~~~~~~~~~~~~~
2de9b711 478These environment variables apply to 'all' core Git commands. Nb: it
c1bdacf9 479is worth noting that they may be used/overridden by SCMS sitting above
f25b98e6 480Git so take care if using a foreign front-end.
c1bdacf9 481
eee7f4a2 482`GIT_INDEX_FILE`::
b724df6b 483 This environment variable specifies an alternate
5f3aa197
LS
484 index file. If not specified, the default of `$GIT_DIR/index`
485 is used.
c1bdacf9 486
eee7f4a2 487`GIT_INDEX_VERSION`::
819fb682
JH
488 This environment variable specifies what index version is used
489 when writing the index file out. It won't affect existing index
70320541
NTND
490 files. By default index file version 2 or 3 is used. See
491 linkgit:git-update-index[1] for more information.
136347d7 492
eee7f4a2 493`GIT_OBJECT_DIRECTORY`::
c1bdacf9
DG
494 If the object storage directory is specified via this
495 environment variable then the sha1 directories are created
496 underneath - otherwise the default `$GIT_DIR/objects`
497 directory is used.
498
eee7f4a2 499`GIT_ALTERNATE_OBJECT_DIRECTORIES`::
2de9b711 500 Due to the immutable nature of Git objects, old objects can be
c1bdacf9 501 archived into shared, read-only directories. This variable
80ba074f 502 specifies a ":" separated (on Windows ";" separated) list
2de9b711 503 of Git object directories which can be used to search for Git
80ba074f 504 objects. New objects will not be written to these directories.
cf3c6352 505+
ad471949
AH
506Entries that begin with `"` (double-quote) will be interpreted
507as C-style quoted paths, removing leading and trailing
508double-quotes and respecting backslash escapes. E.g., the value
509`"path-with-\"-and-:-in-it":vanilla-path` has two paths:
510`path-with-"-and-:-in-it` and `vanilla-path`.
c1bdacf9 511
eee7f4a2
TR
512`GIT_DIR`::
513 If the `GIT_DIR` environment variable is set then it
2fa090b6
JH
514 specifies a path to use instead of the default `.git`
515 for the base of the repository.
bcf9626a 516 The `--git-dir` command-line option also sets this value.
c1bdacf9 517
eee7f4a2 518`GIT_WORK_TREE`::
a758a349 519 Set the path to the root of the working tree.
bcf9626a 520 This can also be controlled by the `--work-tree` command-line
892c41b9
ML
521 option and the core.worktree configuration variable.
522
eee7f4a2 523`GIT_NAMESPACE`::
2de9b711 524 Set the Git namespace; see linkgit:gitnamespaces[7] for details.
bcf9626a 525 The `--namespace` command-line option also sets this value.
d49483f0 526
eee7f4a2 527`GIT_CEILING_DIRECTORIES`::
7ec30aaa 528 This should be a colon-separated list of absolute paths. If
3e07d268 529 set, it is a list of directories that Git should not chdir up
7ec30aaa
MH
530 into while looking for a repository directory (useful for
531 excluding slow-loading network directories). It will not
532 exclude the current working directory or a GIT_DIR set on the
533 command line or in the environment. Normally, Git has to read
534 the entries in this list and resolve any symlink that
535 might be present in order to compare them with the current
536 directory. However, if even this access is slow, you
537 can add an empty entry to the list to tell Git that the
538 subsequent entries are not symlinks and needn't be resolved;
539 e.g.,
eee7f4a2 540 `GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink`.
0454dd93 541
eee7f4a2 542`GIT_DISCOVERY_ACROSS_FILESYSTEM`::
e6405517 543 When run in a directory that does not have ".git" repository
2de9b711 544 directory, Git tries to find such a directory in the parent
e6405517 545 directories to find the top of the working tree, but by default it
80f0b3f3 546 does not cross filesystem boundaries. This Boolean environment variable
2de9b711 547 can be set to true to tell Git not to stop at filesystem
eee7f4a2
TR
548 boundaries. Like `GIT_CEILING_DIRECTORIES`, this will not affect
549 an explicit repository directory set via `GIT_DIR` or on the
cf87463e 550 command line.
8030e442 551
eee7f4a2 552`GIT_COMMON_DIR`::
c7b3a3d2
NTND
553 If this variable is set to a path, non-worktree files that are
554 normally in $GIT_DIR will be taken from this path
555 instead. Worktree-specific files such as HEAD or index are
529fef20 556 taken from $GIT_DIR. See linkgit:gitrepository-layout[5] and
1eaca7a5 557 linkgit:git-worktree[1] for
c7b3a3d2
NTND
558 details. This variable has lower precedence than other path
559 variables such as GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY...
560
ed11a5a7 561`GIT_DEFAULT_HASH`::
3c9331a1 562 If this variable is set, the default hash algorithm for new
5f0e37b4
JH
563 repositories will be set to this value. This value is
564 ignored when cloning and the setting of the remote repository
8e42eb0e
AM
565 is always used. The default is "sha1".
566 See `--object-format` in linkgit:git-init[1].
3c9331a1 567
aa19619a
PS
568`GIT_DEFAULT_REF_FORMAT`::
569 If this variable is set, the default reference backend format for new
570 repositories will be set to this value. The default is "files".
571 See `--ref-format` in linkgit:git-init[1].
572
2de9b711 573Git Commits
c1bdacf9 574~~~~~~~~~~~
eee7f4a2 575`GIT_AUTHOR_NAME`::
bc94e586 576 The human-readable name used in the author identity when creating commit or
577 tag objects, or when writing reflogs. Overrides the `user.name` and
578 `author.name` configuration settings.
579
eee7f4a2 580`GIT_AUTHOR_EMAIL`::
bc94e586 581 The email address used in the author identity when creating commit or
582 tag objects, or when writing reflogs. Overrides the `user.email` and
583 `author.email` configuration settings.
584
eee7f4a2 585`GIT_AUTHOR_DATE`::
bc94e586 586 The date used for the author identity when creating commit or tag objects, or
587 when writing reflogs. See linkgit:git-commit[1] for valid formats.
588
eee7f4a2 589`GIT_COMMITTER_NAME`::
bc94e586 590 The human-readable name used in the committer identity when creating commit or
591 tag objects, or when writing reflogs. Overrides the `user.name` and
592 `committer.name` configuration settings.
593
eee7f4a2 594`GIT_COMMITTER_EMAIL`::
bc94e586 595 The email address used in the author identity when creating commit or
596 tag objects, or when writing reflogs. Overrides the `user.email` and
597 `committer.email` configuration settings.
598
eee7f4a2 599`GIT_COMMITTER_DATE`::
bc94e586 600 The date used for the committer identity when creating commit or tag objects, or
601 when writing reflogs. See linkgit:git-commit[1] for valid formats.
602
603`EMAIL`::
604 The email address used in the author and committer identities if no other
605 relevant environment variable or configuration setting has been set.
c1bdacf9 606
2de9b711 607Git Diffs
c1bdacf9 608~~~~~~~~~
eee7f4a2 609`GIT_DIFF_OPTS`::
fde97d8a
SE
610 Only valid setting is "--unified=??" or "-u??" to set the
611 number of context lines shown when a unified diff is created.
612 This takes precedence over any "-U" or "--unified" option
2de9b711 613 value passed on the Git diff command line.
fde97d8a 614
eee7f4a2
TR
615`GIT_EXTERNAL_DIFF`::
616 When the environment variable `GIT_EXTERNAL_DIFF` is set, the
17bae894
PB
617 program named by it is called to generate diffs, and Git
618 does not use its builtin diff machinery.
619 For a path that is added, removed, or modified,
eee7f4a2 620 `GIT_EXTERNAL_DIFF` is called with 7 parameters:
fde97d8a
SE
621
622 path old-file old-hex old-mode new-file new-hex new-mode
623+
624where:
625
626 <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
627 contents of <old|new>,
d5fa1f1a 628 <old|new>-hex:: are the 40-hexdigit SHA-1 hashes,
fde97d8a 629 <old|new>-mode:: are the octal representation of the file modes.
fde97d8a
SE
630+
631The file parameters can point at the user's working file
632(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
633when a new file is added), or a temporary file (e.g. `old-file` in the
eee7f4a2 634index). `GIT_EXTERNAL_DIFF` should not worry about unlinking the
70661d28 635temporary file -- it is removed when `GIT_EXTERNAL_DIFF` exits.
fde97d8a 636+
eee7f4a2 637For a path that is unmerged, `GIT_EXTERNAL_DIFF` is called with 1
fde97d8a 638parameter, <path>.
ee7fb0b1 639+
eee7f4a2
TR
640For each path `GIT_EXTERNAL_DIFF` is called, two environment variables,
641`GIT_DIFF_PATH_COUNTER` and `GIT_DIFF_PATH_TOTAL` are set.
ee7fb0b1 642
eee7f4a2 643`GIT_DIFF_PATH_COUNTER`::
ee7fb0b1
ZK
644 A 1-based counter incremented by one for every path.
645
eee7f4a2 646`GIT_DIFF_PATH_TOTAL`::
ee7fb0b1 647 The total number of paths.
2cf565c5 648
575ba9d6
ML
649other
650~~~~~
eee7f4a2 651`GIT_MERGE_VERBOSITY`::
dbddb714
JN
652 A number controlling the amount of output shown by
653 the recursive merge strategy. Overrides merge.verbosity.
5162e697 654 See linkgit:git-merge[1]
dbddb714 655
eee7f4a2 656`GIT_PAGER`::
a7738c77 657 This environment variable overrides `$PAGER`. If it is set
2de9b711 658 to an empty string or to the value "cat", Git will not launch
ab54cd6c
JN
659 a pager. See also the `core.pager` option in
660 linkgit:git-config[1].
c27d205a 661
44a4693b
DS
662`GIT_PROGRESS_DELAY`::
663 A number controlling how many seconds to delay before showing
664 optional progress indicators. Defaults to 2.
665
eee7f4a2 666`GIT_EDITOR`::
36384c97 667 This environment variable overrides `$EDITOR` and `$VISUAL`.
2de9b711 668 It is used by several Git commands when, on interactive mode,
36384c97
RSM
669 an editor is to be launched. See also linkgit:git-var[1]
670 and the `core.editor` option in linkgit:git-config[1].
671
902a126e
PB
672`GIT_SEQUENCE_EDITOR`::
673 This environment variable overrides the configured Git editor
674 when editing the todo list of an interactive rebase. See also
5bed7f66
PB
675 linkgit:git-rebase[1] and the `sequence.editor` option in
676 linkgit:git-config[1].
902a126e 677
eee7f4a2
TR
678`GIT_SSH`::
679`GIT_SSH_COMMAND`::
39942766
TQ
680 If either of these environment variables is set then 'git fetch'
681 and 'git push' will use the specified command instead of 'ssh'
682 when they need to connect to a remote system.
94b8ae5a
BW
683 The command-line parameters passed to the configured command are
684 determined by the ssh variant. See `ssh.variant` option in
685 linkgit:git-config[1] for details.
d5538b41 686+
39942766
TQ
687`$GIT_SSH_COMMAND` takes precedence over `$GIT_SSH`, and is interpreted
688by the shell, which allows additional arguments to be included.
689`$GIT_SSH` on the other hand must be just the path to a program
690(which can be a wrapper shell script, if additional arguments are
691needed).
d5538b41
SP
692+
693Usually it is easier to configure any desired options through your
694personal `.ssh/config` file. Please consult your ssh documentation
695for further details.
696
dd33e077
SF
697`GIT_SSH_VARIANT`::
698 If this environment variable is set, it overrides Git's autodetection
699 whether `GIT_SSH`/`GIT_SSH_COMMAND`/`core.sshCommand` refer to OpenSSH,
700 plink or tortoiseplink. This variable overrides the config setting
701 `ssh.variant` that serves the same purpose.
702
29491ca5
JH
703`GIT_SSL_NO_VERIFY`::
704 Setting and exporting this environment variable to any value
705 tells Git not to verify the SSL certificate when fetching or
706 pushing over HTTPS.
707
44451a2e
JC
708`GIT_ATTR_SOURCE`::
709 Sets the treeish that gitattributes will be read from.
710
eee7f4a2 711`GIT_ASKPASS`::
2de9b711 712 If this environment variable is set, then Git commands which need to
453842c9 713 acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
06ab60c0 714 will call this program with a suitable prompt as command-line argument
ae9f6311 715 and read the password from its STDOUT. See also the `core.askPass`
453842c9
KF
716 option in linkgit:git-config[1].
717
eee7f4a2 718`GIT_TERMINAL_PROMPT`::
80f0b3f3 719 If this Boolean environment variable is set to false, git will not prompt
e652c0eb
JK
720 on the terminal (e.g., when asking for HTTP authentication).
721
4179b489
PS
722`GIT_CONFIG_GLOBAL`::
723`GIT_CONFIG_SYSTEM`::
724 Take the configuration from the given files instead from global or
725 system-level configuration files. If `GIT_CONFIG_SYSTEM` is set, the
726 system config file defined at build time (usually `/etc/gitconfig`)
727 will not be read. Likewise, if `GIT_CONFIG_GLOBAL` is set, neither
728 `$HOME/.gitconfig` nor `$XDG_CONFIG_HOME/git/config` will be read. Can
729 be set to `/dev/null` to skip reading configuration files of the
730 respective level.
731
eee7f4a2 732`GIT_CONFIG_NOSYSTEM`::
e8ef401c 733 Whether to skip reading settings from the system-wide
80f0b3f3 734 `$(prefix)/etc/gitconfig` file. This Boolean environment variable can
e8ef401c
JN
735 be used along with `$HOME` and `$XDG_CONFIG_HOME` to create a
736 predictable environment for a picky script, or you can set it
80f0b3f3 737 to true to temporarily avoid using a buggy `/etc/gitconfig` file while
e8ef401c
JN
738 waiting for someone with sufficient permissions to fix it.
739
eee7f4a2 740`GIT_FLUSH`::
556e6803 741 If this Boolean environment variable is set to true, then commands such
0b444cdb 742 as 'git blame' (in incremental mode), 'git rev-list', 'git log',
627a8b8d 743 'git check-attr' and 'git check-ignore' will
f1ed7fea
AS
744 force a flush of the output stream after each record have been
745 flushed. If this
556e6803 746 variable is set to false, the output of these commands will be done
06f59e9f 747 using completely buffered I/O. If this environment variable is
2de9b711 748 not set, Git will choose buffered or record-oriented flushing
06f59e9f
TT
749 based on whether stdout appears to be redirected to a file or not.
750
eee7f4a2 751`GIT_TRACE`::
eb9250df
KB
752 Enables general trace messages, e.g. alias expansion, built-in
753 command execution and external command execution.
754+
755If this variable is set to "1", "2" or "true" (comparison
756is case insensitive), trace messages will be printed to
757stderr.
758+
759If the variable is set to an integer value greater than 2
760and lower than 10 (strictly) then Git will interpret this
761value as an open file descriptor and will try to write the
762trace messages into this file descriptor.
763+
764Alternatively, if the variable is set to an absolute path
765(starting with a '/' character), Git will interpret this
fa0aeea7
SG
766as a file path and will try to append the trace messages
767to it.
eb9250df
KB
768+
769Unsetting the variable, or setting it to empty, "0" or
770"false" (case insensitive) disables trace messages.
575ba9d6 771
bd76afd1
AV
772`GIT_TRACE_FSMONITOR`::
773 Enables trace messages for the filesystem monitor extension.
774 See `GIT_TRACE` for available trace output options.
775
eee7f4a2 776`GIT_TRACE_PACK_ACCESS`::
67dc598e 777 Enables trace messages for all accesses to any packs. For each
b12ca963
NTND
778 access, the pack file name and an offset in the pack is
779 recorded. This may be helpful for troubleshooting some
780 pack-related performance problems.
eee7f4a2 781 See `GIT_TRACE` for available trace output options.
b12ca963 782
eee7f4a2 783`GIT_TRACE_PACKET`::
eb9250df
KB
784 Enables trace messages for all packets coming in or out of a
785 given program. This can help with debugging object negotiation
786 or other protocol issues. Tracing is turned off at a packet
eee7f4a2
TR
787 starting with "PACK" (but see `GIT_TRACE_PACKFILE` below).
788 See `GIT_TRACE` for available trace output options.
eb9250df 789
eee7f4a2 790`GIT_TRACE_PACKFILE`::
32359838
JK
791 Enables tracing of packfiles sent or received by a
792 given program. Unlike other trace output, this trace is
793 verbatim: no headers, and no quoting of binary data. You almost
794 certainly want to direct into a file (e.g.,
795 `GIT_TRACE_PACKFILE=/tmp/my.pack`) rather than displaying it on
796 the terminal or mixing it with other trace output.
797+
798Note that this is currently only implemented for the client side
799of clones and fetches.
800
eee7f4a2 801`GIT_TRACE_PERFORMANCE`::
578da039
KB
802 Enables performance related trace messages, e.g. total execution
803 time of each Git command.
eee7f4a2 804 See `GIT_TRACE` for available trace output options.
578da039 805
4441f427
HWN
806`GIT_TRACE_REFS`::
807 Enables trace messages for operations on the ref database.
808 See `GIT_TRACE` for available trace output options.
809
eee7f4a2 810`GIT_TRACE_SETUP`::
eb9250df
KB
811 Enables trace messages printing the .git, working tree and current
812 working directory after Git has completed its setup phase.
eee7f4a2 813 See `GIT_TRACE` for available trace output options.
eb9250df 814
eee7f4a2 815`GIT_TRACE_SHALLOW`::
eb9250df
KB
816 Enables trace messages that can help debugging fetching /
817 cloning of shallow repositories.
eee7f4a2 818 See `GIT_TRACE` for available trace output options.
1dd278ce 819
2f84df2c 820`GIT_TRACE_CURL`::
74c682d3
EP
821 Enables a curl full trace dump of all incoming and outgoing data,
822 including descriptive information, of the git transport protocol.
2f84df2c 823 This is similar to doing curl `--trace-ascii` on the command line.
2f84df2c 824 See `GIT_TRACE` for available trace output options.
74c682d3 825
8ba18e6f
JT
826`GIT_TRACE_CURL_NO_DATA`::
827 When a curl trace is enabled (see `GIT_TRACE_CURL` above), do not dump
828 data (that is, only dump info lines and headers).
829
e4b75d6a 830`GIT_TRACE2`::
04b7e86e 831 Enables more detailed trace messages from the "trace2" library.
e4b75d6a 832 Output from `GIT_TRACE2` is a simple text-based format for human
04b7e86e
DS
833 readability.
834+
4e0d3aa1
SG
835If this variable is set to "1", "2" or "true" (comparison
836is case insensitive), trace messages will be printed to
837stderr.
838+
839If the variable is set to an integer value greater than 2
840and lower than 10 (strictly) then Git will interpret this
841value as an open file descriptor and will try to write the
842trace messages into this file descriptor.
843+
844Alternatively, if the variable is set to an absolute path
845(starting with a '/' character), Git will interpret this
846as a file path and will try to append the trace messages
847to it. If the path already exists and is a directory, the
848trace messages will be written to files (one per process)
849in that directory, named according to the last component
850of the SID and an optional counter (to avoid filename
851collisions).
852+
853In addition, if the variable is set to
2162f9f6 854`af_unix:[<socket-type>:]<absolute-pathname>`, Git will try
4e0d3aa1
SG
855to open the path as a Unix Domain Socket. The socket type
856can be either `stream` or `dgram`.
857+
858Unsetting the variable, or setting it to empty, "0" or
859"false" (case insensitive) disables trace messages.
860+
861See link:technical/api-trace2.html[Trace2 documentation]
862for full details.
863
04b7e86e 864
e4b75d6a 865`GIT_TRACE2_EVENT`::
04b7e86e 866 This setting writes a JSON-based format that is suited for machine
4e0d3aa1
SG
867 interpretation.
868 See `GIT_TRACE2` for available trace output options and
869 link:technical/api-trace2.html[Trace2 documentation] for full details.
04b7e86e 870
e4b75d6a
SG
871`GIT_TRACE2_PERF`::
872 In addition to the text-based messages available in `GIT_TRACE2`, this
04b7e86e 873 setting writes a column-based format for understanding nesting
4e0d3aa1
SG
874 regions.
875 See `GIT_TRACE2` for available trace output options and
876 link:technical/api-trace2.html[Trace2 documentation] for full details.
04b7e86e 877
827e7d4d
JT
878`GIT_TRACE_REDACT`::
879 By default, when tracing is activated, Git redacts the values of
88e9b1e3 880 cookies, the "Authorization:" header, the "Proxy-Authorization:"
80f0b3f3 881 header and packfile URIs. Set this Boolean environment variable to false to prevent this
88e9b1e3 882 redaction.
83411783 883
b3806f76
JH
884`GIT_NO_REPLACE_OBJECTS`::
885 Setting and exporting this environment variable tells Git to
886 ignore replacement refs and do not replace Git objects.
887
eee7f4a2 888`GIT_LITERAL_PATHSPECS`::
80f0b3f3 889 Setting this Boolean environment variable to true will cause Git to treat all
823ab40f
JK
890 pathspecs literally, rather than as glob patterns. For example,
891 running `GIT_LITERAL_PATHSPECS=1 git log -- '*.c'` will search
892 for commits that touch the path `*.c`, not any paths that the
893 glob `*.c` matches. You might want this if you are feeding
2de9b711 894 literal paths to Git (e.g., paths previously given to you by
823ab40f
JK
895 `git ls-tree`, `--raw` diff output, etc).
896
eee7f4a2 897`GIT_GLOB_PATHSPECS`::
80f0b3f3 898 Setting this Boolean environment variable to true will cause Git to treat all
bd30c2e4
NTND
899 pathspecs as glob patterns (aka "glob" magic).
900
eee7f4a2 901`GIT_NOGLOB_PATHSPECS`::
80f0b3f3 902 Setting this Boolean environment variable to true will cause Git to treat all
bd30c2e4
NTND
903 pathspecs as literal (aka "literal" magic).
904
eee7f4a2 905`GIT_ICASE_PATHSPECS`::
80f0b3f3 906 Setting this Boolean environment variable to true will cause Git to treat all
93d93537
NTND
907 pathspecs as case-insensitive.
908
e6d5479e
JH
909`GIT_NO_LAZY_FETCH`::
910 Setting this Boolean environment variable to true tells Git
911 not to lazily fetch missing objects from the promisor remote
912 on demand.
913
eee7f4a2 914`GIT_REFLOG_ACTION`::
c3e2d189
JH
915 When a ref is updated, reflog entries are created to keep
916 track of the reason why the ref was updated (which is
917 typically the name of the high-level command that updated
918 the ref), in addition to the old and new values of the ref.
919 A scripted Porcelain command can use set_reflog_action
920 helper function in `git-sh-setup` to set its name to this
921 variable when it is invoked as the top level command by the
922 end user, to be recorded in the body of the reflog.
923
eee7f4a2 924`GIT_REF_PARANOIA`::
80f0b3f3 925 If this Boolean environment variable is set to false, ignore broken or badly named refs when iterating
968f12fd
JK
926 over lists of refs. Normally Git will try to include any such
927 refs, which may cause some operations to fail. This is usually
928 preferable, as potentially destructive operations (e.g.,
929 linkgit:git-prune[1]) are better off aborting rather than
930 ignoring broken refs (and thus considering the history they
931 point to as not worth saving). The default value is `1` (i.e.,
932 be paranoid about detecting and aborting all operations). You
933 should not normally need to set this to `0`, but it may be
934 useful when trying to salvage data from a corrupted repository.
49672f26 935
e04838ea
PS
936`GIT_COMMIT_GRAPH_PARANOIA`::
937 When loading a commit object from the commit-graph, Git performs an
938 existence check on the object in the object database. This is done to
939 avoid issues with stale commit-graphs that contain references to
940 already-deleted commits, but comes with a performance penalty.
941+
b1df3b38
PS
942The default is "false", which disables the aforementioned behavior.
943Setting this to "true" enables the existence check so that stale commits
944will never be returned from the commit-graph at the cost of performance.
e04838ea 945
eee7f4a2 946`GIT_ALLOW_PROTOCOL`::
f1762d77
BW
947 If set to a colon-separated list of protocols, behave as if
948 `protocol.allow` is set to `never`, and each of the listed
949 protocols has `protocol.<name>.allow` set to `always`
559c2c3d 950 (overriding any existing configuration). See the description of
f1762d77
BW
951 `protocol.allow` in linkgit:git-config[1] for more details.
952
953`GIT_PROTOCOL_FROM_USER`::
80f0b3f3 954 Set this Boolean environment variable to false to prevent protocols used by fetch/push/clone which are
f1762d77
BW
955 configured to the `user` state. This is useful to restrict recursive
956 submodule initialization from an untrusted repository or for programs
957 which feed potentially-untrusted URLS to git commands. See
958 linkgit:git-config[1] for more details.
823ab40f 959
373d70ef
BW
960`GIT_PROTOCOL`::
961 For internal use only. Used in handshaking the wire protocol.
962 Contains a colon ':' separated list of keys with optional values
67471bc7 963 '<key>[=<value>]'. Presence of unknown keys and values must be
373d70ef 964 ignored.
2834a72d
JK
965+
966Note that servers may need to be configured to allow this variable to
967pass over some transports. It will be propagated automatically when
968accessing local repositories (i.e., `file://` or a filesystem path), as
969well as over the `git://` protocol. For git-over-http, it should work
970automatically in most configurations, but see the discussion in
971linkgit:git-http-backend[1]. For git-over-ssh, the ssh server may need
972to be configured to allow clients to pass this variable (e.g., by using
973`AcceptEnv GIT_PROTOCOL` with OpenSSH).
974+
975This configuration is optional. If the variable is not propagated, then
976clients will fall back to the original "v0" protocol (but may miss out
977on some performance improvements or features). This variable currently
978only affects clones and fetches; it is not yet used for pushes (but may
979be in the future).
373d70ef 980
27344d6a 981`GIT_OPTIONAL_LOCKS`::
80f0b3f3 982 If this Boolean environment variable is set to false, Git will complete any requested operation without
27344d6a
JK
983 performing any optional sub-operations that require taking a lock.
984 For example, this will prevent `git status` from refreshing the
985 index as a side effect. This is useful for processes running in
986 the background which do not want to cause lock contention with
987 other operations on the repository. Defaults to `1`.
988
b2f55717
JS
989`GIT_REDIRECT_STDIN`::
990`GIT_REDIRECT_STDOUT`::
991`GIT_REDIRECT_STDERR`::
992 Windows-only: allow redirecting the standard input/output/error
993 handles to paths specified by the environment variables. This is
994 particularly useful in multi-threaded applications where the
995 canonical way to pass standard handles via `CreateProcess()` is
996 not an option because it would require the handles to be marked
997 inheritable (and consequently *every* spawned process would
998 inherit them, possibly blocking regular Git operations). The
999 primary intended use case is to use named pipes for communication
1000 (e.g. `\\.\pipe\my-git-stdin-123`).
1001+
1002Two special values are supported: `off` will simply close the
1003corresponding standard handle, and if `GIT_REDIRECT_STDERR` is
1004`2>&1`, standard error will be redirected to the same handle as
1005standard output.
1006
a2cd709d
AR
1007`GIT_PRINT_SHA1_ELLIPSIS` (deprecated)::
1008 If set to `yes`, print an ellipsis following an
1009 (abbreviated) SHA-1 value. This affects indications of
1010 detached HEADs (linkgit:git-checkout[1]) and the raw
1011 diff output (linkgit:git-diff[1]). Printing an
1012 ellipsis in the cases mentioned is no longer considered
1013 adequate and support for it is likely to be removed in the
1014 foreseeable future (along with the variable).
1015
8db9307c
JH
1016Discussion[[Discussion]]
1017------------------------
40dac517
BF
1018
1019More detail on the following is available from the
2de9b711 1020link:user-manual.html#git-concepts[Git concepts chapter of the
6998e4db 1021user-manual] and linkgit:gitcore-tutorial[7].
40dac517 1022
2de9b711 1023A Git project normally consists of a working directory with a ".git"
40dac517
BF
1024subdirectory at the top level. The .git directory contains, among other
1025things, a compressed object database representing the complete history
1026of the project, an "index" file which links that history to the current
1027contents of the working tree, and named pointers into that history such
1028as tags and branch heads.
1029
1030The object database contains objects of three main types: blobs, which
1031hold file data; trees, which point to blobs and other trees to build up
02ff6250 1032directory hierarchies; and commits, which each reference a single tree
40dac517
BF
1033and some number of parent commits.
1034
1035The commit, equivalent to what other systems call a "changeset" or
1036"version", represents a step in the project's history, and each parent
1037represents an immediately preceding step. Commits with more than one
1038parent represent merges of independent lines of development.
1039
d5fa1f1a 1040All objects are named by the SHA-1 hash of their contents, normally
40dac517
BF
1041written as a string of 40 hex digits. Such names are globally unique.
1042The entire history leading up to a commit can be vouched for by signing
1043just that commit. A fourth object type, the tag, is provided for this
1044purpose.
1045
1046When first created, objects are stored in individual files, but for
1047efficiency may later be compressed together into "pack files".
1048
1049Named pointers called refs mark interesting points in history. A ref
d9a4bb33
JH
1050may contain the SHA-1 name of an object or the name of another ref (the
1051latter is called a "symbolic ref").
1052Refs with names beginning `refs/head/` contain the SHA-1 name of the most
d5fa1f1a 1053recent commit (or "head") of a branch under development. SHA-1 names of
d9a4bb33 1054tags of interest are stored under `refs/tags/`. A symbolic ref named
40dac517
BF
1055`HEAD` contains the name of the currently checked-out branch.
1056
1057The index file is initialized with a list of all paths and, for each
1058path, a blob object and a set of attributes. The blob object represents
1059the contents of the file as of the head of the current branch. The
1060attributes (last modified time, size, etc.) are taken from the
1061corresponding file in the working tree. Subsequent changes to the
1062working tree can be found by comparing these attributes. The index may
1063be updated with new content, and new commits may be created from the
1064content stored in the index.
1065
1066The index is also capable of storing multiple entries (called "stages")
1067for a given pathname. These stages are used to hold the various
1068unmerged version of a file when a merge is in progress.
6c84e2e0 1069
7687ae98
JH
1070FURTHER DOCUMENTATION
1071---------------------
1072
1073See the references in the "description" section to get started
2de9b711 1074using Git. The following is probably more detail than necessary
7687ae98
JH
1075for a first-time user.
1076
2de9b711 1077The link:user-manual.html#git-concepts[Git concepts chapter of the
7687ae98 1078user-manual] and linkgit:gitcore-tutorial[7] both provide
2de9b711 1079introductions to the underlying Git architecture.
7687ae98
JH
1080
1081See linkgit:gitworkflows[7] for an overview of recommended workflows.
1082
1083See also the link:howto-index.html[howto] documents for some useful
1084examples.
1085
1086The internals are documented in the
48a8c26c 1087link:technical/api-index.html[Git API documentation].
7687ae98
JH
1088
1089Users migrating from CVS may also want to
1090read linkgit:gitcvs-migration[7].
1091
1092
cb22bc44
AE
1093Authors
1094-------
48bb914e 1095Git was started by Linus Torvalds, and is currently maintained by Junio
2de9b711 1096C Hamano. Numerous contributions have come from the Git mailing list
65175d9e 1097<git@vger.kernel.org>. https://openhub.net/p/git/contributors/summary
6ecc01f2
JH
1098gives you a more complete list of contributors.
1099
1100If you have a clone of git.git itself, the
d8f708f8
JK
1101output of linkgit:git-shortlog[1] and linkgit:git-blame[1] can show you
1102the authors for specific parts of the project.
2cf565c5 1103
c97ca277
JH
1104Reporting Bugs
1105--------------
1106
1107Report bugs to the Git mailing list <git@vger.kernel.org> where the
1108development and maintenance is primarily done. You do not have to be
c56170a0 1109subscribed to the list to send a message there. See the list archive
46c67492 1110at https://lore.kernel.org/git for previous bug reports and other
c56170a0 1111discussions.
c97ca277 1112
2caa7b8d
ÆAB
1113Issues which are security relevant should be disclosed privately to
1114the Git Security mailing list <git-security@googlegroups.com>.
1115
497c8331
CC
1116SEE ALSO
1117--------
1118linkgit:gittutorial[7], linkgit:gittutorial-2[7],
673151a9 1119linkgit:giteveryday[7], linkgit:gitcvs-migration[7],
497c8331 1120linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
801a011d
TR
1121linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
1122linkgit:gitworkflows[7]
497c8331 1123
2cf565c5
DG
1124GIT
1125---
9e1f0a85 1126Part of the linkgit:git[1] suite