]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git.txt
git: extend --no-lazy-fetch to work across subprocesses
[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`.
c784b0a5 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
0089521c
NTND
214--list-cmds=group[,group...]::
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
2de9b711 568Git Commits
c1bdacf9 569~~~~~~~~~~~
eee7f4a2 570`GIT_AUTHOR_NAME`::
bc94e586 571 The human-readable name used in the author identity when creating commit or
572 tag objects, or when writing reflogs. Overrides the `user.name` and
573 `author.name` configuration settings.
574
eee7f4a2 575`GIT_AUTHOR_EMAIL`::
bc94e586 576 The email address used in the author identity when creating commit or
577 tag objects, or when writing reflogs. Overrides the `user.email` and
578 `author.email` configuration settings.
579
eee7f4a2 580`GIT_AUTHOR_DATE`::
bc94e586 581 The date used for the author identity when creating commit or tag objects, or
582 when writing reflogs. See linkgit:git-commit[1] for valid formats.
583
eee7f4a2 584`GIT_COMMITTER_NAME`::
bc94e586 585 The human-readable name used in the committer identity when creating commit or
586 tag objects, or when writing reflogs. Overrides the `user.name` and
587 `committer.name` configuration settings.
588
eee7f4a2 589`GIT_COMMITTER_EMAIL`::
bc94e586 590 The email address used in the author identity when creating commit or
591 tag objects, or when writing reflogs. Overrides the `user.email` and
592 `committer.email` configuration settings.
593
eee7f4a2 594`GIT_COMMITTER_DATE`::
bc94e586 595 The date used for the committer identity when creating commit or tag objects, or
596 when writing reflogs. See linkgit:git-commit[1] for valid formats.
597
598`EMAIL`::
599 The email address used in the author and committer identities if no other
600 relevant environment variable or configuration setting has been set.
c1bdacf9 601
2de9b711 602Git Diffs
c1bdacf9 603~~~~~~~~~
eee7f4a2 604`GIT_DIFF_OPTS`::
fde97d8a
SE
605 Only valid setting is "--unified=??" or "-u??" to set the
606 number of context lines shown when a unified diff is created.
607 This takes precedence over any "-U" or "--unified" option
2de9b711 608 value passed on the Git diff command line.
fde97d8a 609
eee7f4a2
TR
610`GIT_EXTERNAL_DIFF`::
611 When the environment variable `GIT_EXTERNAL_DIFF` is set, the
17bae894
PB
612 program named by it is called to generate diffs, and Git
613 does not use its builtin diff machinery.
614 For a path that is added, removed, or modified,
eee7f4a2 615 `GIT_EXTERNAL_DIFF` is called with 7 parameters:
fde97d8a
SE
616
617 path old-file old-hex old-mode new-file new-hex new-mode
618+
619where:
620
621 <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
622 contents of <old|new>,
d5fa1f1a 623 <old|new>-hex:: are the 40-hexdigit SHA-1 hashes,
fde97d8a 624 <old|new>-mode:: are the octal representation of the file modes.
fde97d8a
SE
625+
626The file parameters can point at the user's working file
627(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
628when a new file is added), or a temporary file (e.g. `old-file` in the
eee7f4a2 629index). `GIT_EXTERNAL_DIFF` should not worry about unlinking the
70661d28 630temporary file -- it is removed when `GIT_EXTERNAL_DIFF` exits.
fde97d8a 631+
eee7f4a2 632For a path that is unmerged, `GIT_EXTERNAL_DIFF` is called with 1
fde97d8a 633parameter, <path>.
ee7fb0b1 634+
eee7f4a2
TR
635For each path `GIT_EXTERNAL_DIFF` is called, two environment variables,
636`GIT_DIFF_PATH_COUNTER` and `GIT_DIFF_PATH_TOTAL` are set.
ee7fb0b1 637
eee7f4a2 638`GIT_DIFF_PATH_COUNTER`::
ee7fb0b1
ZK
639 A 1-based counter incremented by one for every path.
640
eee7f4a2 641`GIT_DIFF_PATH_TOTAL`::
ee7fb0b1 642 The total number of paths.
2cf565c5 643
575ba9d6
ML
644other
645~~~~~
eee7f4a2 646`GIT_MERGE_VERBOSITY`::
dbddb714
JN
647 A number controlling the amount of output shown by
648 the recursive merge strategy. Overrides merge.verbosity.
5162e697 649 See linkgit:git-merge[1]
dbddb714 650
eee7f4a2 651`GIT_PAGER`::
a7738c77 652 This environment variable overrides `$PAGER`. If it is set
2de9b711 653 to an empty string or to the value "cat", Git will not launch
ab54cd6c
JN
654 a pager. See also the `core.pager` option in
655 linkgit:git-config[1].
c27d205a 656
44a4693b
DS
657`GIT_PROGRESS_DELAY`::
658 A number controlling how many seconds to delay before showing
659 optional progress indicators. Defaults to 2.
660
eee7f4a2 661`GIT_EDITOR`::
36384c97 662 This environment variable overrides `$EDITOR` and `$VISUAL`.
2de9b711 663 It is used by several Git commands when, on interactive mode,
36384c97
RSM
664 an editor is to be launched. See also linkgit:git-var[1]
665 and the `core.editor` option in linkgit:git-config[1].
666
902a126e
PB
667`GIT_SEQUENCE_EDITOR`::
668 This environment variable overrides the configured Git editor
669 when editing the todo list of an interactive rebase. See also
5bed7f66
PB
670 linkgit:git-rebase[1] and the `sequence.editor` option in
671 linkgit:git-config[1].
902a126e 672
eee7f4a2
TR
673`GIT_SSH`::
674`GIT_SSH_COMMAND`::
39942766
TQ
675 If either of these environment variables is set then 'git fetch'
676 and 'git push' will use the specified command instead of 'ssh'
677 when they need to connect to a remote system.
94b8ae5a
BW
678 The command-line parameters passed to the configured command are
679 determined by the ssh variant. See `ssh.variant` option in
680 linkgit:git-config[1] for details.
d5538b41 681+
39942766
TQ
682`$GIT_SSH_COMMAND` takes precedence over `$GIT_SSH`, and is interpreted
683by the shell, which allows additional arguments to be included.
684`$GIT_SSH` on the other hand must be just the path to a program
685(which can be a wrapper shell script, if additional arguments are
686needed).
d5538b41
SP
687+
688Usually it is easier to configure any desired options through your
689personal `.ssh/config` file. Please consult your ssh documentation
690for further details.
691
dd33e077
SF
692`GIT_SSH_VARIANT`::
693 If this environment variable is set, it overrides Git's autodetection
694 whether `GIT_SSH`/`GIT_SSH_COMMAND`/`core.sshCommand` refer to OpenSSH,
695 plink or tortoiseplink. This variable overrides the config setting
696 `ssh.variant` that serves the same purpose.
697
29491ca5
JH
698`GIT_SSL_NO_VERIFY`::
699 Setting and exporting this environment variable to any value
700 tells Git not to verify the SSL certificate when fetching or
701 pushing over HTTPS.
702
44451a2e
JC
703`GIT_ATTR_SOURCE`::
704 Sets the treeish that gitattributes will be read from.
705
eee7f4a2 706`GIT_ASKPASS`::
2de9b711 707 If this environment variable is set, then Git commands which need to
453842c9 708 acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
06ab60c0 709 will call this program with a suitable prompt as command-line argument
ae9f6311 710 and read the password from its STDOUT. See also the `core.askPass`
453842c9
KF
711 option in linkgit:git-config[1].
712
eee7f4a2 713`GIT_TERMINAL_PROMPT`::
80f0b3f3 714 If this Boolean environment variable is set to false, git will not prompt
e652c0eb
JK
715 on the terminal (e.g., when asking for HTTP authentication).
716
4179b489
PS
717`GIT_CONFIG_GLOBAL`::
718`GIT_CONFIG_SYSTEM`::
719 Take the configuration from the given files instead from global or
720 system-level configuration files. If `GIT_CONFIG_SYSTEM` is set, the
721 system config file defined at build time (usually `/etc/gitconfig`)
722 will not be read. Likewise, if `GIT_CONFIG_GLOBAL` is set, neither
723 `$HOME/.gitconfig` nor `$XDG_CONFIG_HOME/git/config` will be read. Can
724 be set to `/dev/null` to skip reading configuration files of the
725 respective level.
726
eee7f4a2 727`GIT_CONFIG_NOSYSTEM`::
e8ef401c 728 Whether to skip reading settings from the system-wide
80f0b3f3 729 `$(prefix)/etc/gitconfig` file. This Boolean environment variable can
e8ef401c
JN
730 be used along with `$HOME` and `$XDG_CONFIG_HOME` to create a
731 predictable environment for a picky script, or you can set it
80f0b3f3 732 to true to temporarily avoid using a buggy `/etc/gitconfig` file while
e8ef401c
JN
733 waiting for someone with sufficient permissions to fix it.
734
eee7f4a2 735`GIT_FLUSH`::
fd01795b 736// NEEDSWORK: make it into a usual Boolean environment variable
06f59e9f 737 If this environment variable is set to "1", then commands such
0b444cdb 738 as 'git blame' (in incremental mode), 'git rev-list', 'git log',
627a8b8d 739 'git check-attr' and 'git check-ignore' will
f1ed7fea
AS
740 force a flush of the output stream after each record have been
741 flushed. If this
06f59e9f
TT
742 variable is set to "0", the output of these commands will be done
743 using completely buffered I/O. If this environment variable is
2de9b711 744 not set, Git will choose buffered or record-oriented flushing
06f59e9f
TT
745 based on whether stdout appears to be redirected to a file or not.
746
eee7f4a2 747`GIT_TRACE`::
eb9250df
KB
748 Enables general trace messages, e.g. alias expansion, built-in
749 command execution and external command execution.
750+
751If this variable is set to "1", "2" or "true" (comparison
752is case insensitive), trace messages will be printed to
753stderr.
754+
755If the variable is set to an integer value greater than 2
756and lower than 10 (strictly) then Git will interpret this
757value as an open file descriptor and will try to write the
758trace messages into this file descriptor.
759+
760Alternatively, if the variable is set to an absolute path
761(starting with a '/' character), Git will interpret this
fa0aeea7
SG
762as a file path and will try to append the trace messages
763to it.
eb9250df
KB
764+
765Unsetting the variable, or setting it to empty, "0" or
766"false" (case insensitive) disables trace messages.
575ba9d6 767
bd76afd1
AV
768`GIT_TRACE_FSMONITOR`::
769 Enables trace messages for the filesystem monitor extension.
770 See `GIT_TRACE` for available trace output options.
771
eee7f4a2 772`GIT_TRACE_PACK_ACCESS`::
67dc598e 773 Enables trace messages for all accesses to any packs. For each
b12ca963
NTND
774 access, the pack file name and an offset in the pack is
775 recorded. This may be helpful for troubleshooting some
776 pack-related performance problems.
eee7f4a2 777 See `GIT_TRACE` for available trace output options.
b12ca963 778
eee7f4a2 779`GIT_TRACE_PACKET`::
eb9250df
KB
780 Enables trace messages for all packets coming in or out of a
781 given program. This can help with debugging object negotiation
782 or other protocol issues. Tracing is turned off at a packet
eee7f4a2
TR
783 starting with "PACK" (but see `GIT_TRACE_PACKFILE` below).
784 See `GIT_TRACE` for available trace output options.
eb9250df 785
eee7f4a2 786`GIT_TRACE_PACKFILE`::
32359838
JK
787 Enables tracing of packfiles sent or received by a
788 given program. Unlike other trace output, this trace is
789 verbatim: no headers, and no quoting of binary data. You almost
790 certainly want to direct into a file (e.g.,
791 `GIT_TRACE_PACKFILE=/tmp/my.pack`) rather than displaying it on
792 the terminal or mixing it with other trace output.
793+
794Note that this is currently only implemented for the client side
795of clones and fetches.
796
eee7f4a2 797`GIT_TRACE_PERFORMANCE`::
578da039
KB
798 Enables performance related trace messages, e.g. total execution
799 time of each Git command.
eee7f4a2 800 See `GIT_TRACE` for available trace output options.
578da039 801
4441f427
HWN
802`GIT_TRACE_REFS`::
803 Enables trace messages for operations on the ref database.
804 See `GIT_TRACE` for available trace output options.
805
eee7f4a2 806`GIT_TRACE_SETUP`::
eb9250df
KB
807 Enables trace messages printing the .git, working tree and current
808 working directory after Git has completed its setup phase.
eee7f4a2 809 See `GIT_TRACE` for available trace output options.
eb9250df 810
eee7f4a2 811`GIT_TRACE_SHALLOW`::
eb9250df
KB
812 Enables trace messages that can help debugging fetching /
813 cloning of shallow repositories.
eee7f4a2 814 See `GIT_TRACE` for available trace output options.
1dd278ce 815
2f84df2c 816`GIT_TRACE_CURL`::
74c682d3
EP
817 Enables a curl full trace dump of all incoming and outgoing data,
818 including descriptive information, of the git transport protocol.
2f84df2c 819 This is similar to doing curl `--trace-ascii` on the command line.
2f84df2c 820 See `GIT_TRACE` for available trace output options.
74c682d3 821
8ba18e6f
JT
822`GIT_TRACE_CURL_NO_DATA`::
823 When a curl trace is enabled (see `GIT_TRACE_CURL` above), do not dump
824 data (that is, only dump info lines and headers).
825
e4b75d6a 826`GIT_TRACE2`::
04b7e86e 827 Enables more detailed trace messages from the "trace2" library.
e4b75d6a 828 Output from `GIT_TRACE2` is a simple text-based format for human
04b7e86e
DS
829 readability.
830+
4e0d3aa1
SG
831If this variable is set to "1", "2" or "true" (comparison
832is case insensitive), trace messages will be printed to
833stderr.
834+
835If the variable is set to an integer value greater than 2
836and lower than 10 (strictly) then Git will interpret this
837value as an open file descriptor and will try to write the
838trace messages into this file descriptor.
839+
840Alternatively, if the variable is set to an absolute path
841(starting with a '/' character), Git will interpret this
842as a file path and will try to append the trace messages
843to it. If the path already exists and is a directory, the
844trace messages will be written to files (one per process)
845in that directory, named according to the last component
846of the SID and an optional counter (to avoid filename
847collisions).
848+
849In addition, if the variable is set to
850`af_unix:[<socket_type>:]<absolute-pathname>`, Git will try
851to open the path as a Unix Domain Socket. The socket type
852can be either `stream` or `dgram`.
853+
854Unsetting the variable, or setting it to empty, "0" or
855"false" (case insensitive) disables trace messages.
856+
857See link:technical/api-trace2.html[Trace2 documentation]
858for full details.
859
04b7e86e 860
e4b75d6a 861`GIT_TRACE2_EVENT`::
04b7e86e 862 This setting writes a JSON-based format that is suited for machine
4e0d3aa1
SG
863 interpretation.
864 See `GIT_TRACE2` for available trace output options and
865 link:technical/api-trace2.html[Trace2 documentation] for full details.
04b7e86e 866
e4b75d6a
SG
867`GIT_TRACE2_PERF`::
868 In addition to the text-based messages available in `GIT_TRACE2`, this
04b7e86e 869 setting writes a column-based format for understanding nesting
4e0d3aa1
SG
870 regions.
871 See `GIT_TRACE2` for available trace output options and
872 link:technical/api-trace2.html[Trace2 documentation] for full details.
04b7e86e 873
827e7d4d
JT
874`GIT_TRACE_REDACT`::
875 By default, when tracing is activated, Git redacts the values of
88e9b1e3 876 cookies, the "Authorization:" header, the "Proxy-Authorization:"
80f0b3f3 877 header and packfile URIs. Set this Boolean environment variable to false to prevent this
88e9b1e3 878 redaction.
83411783 879
b3806f76
JH
880`GIT_NO_REPLACE_OBJECTS`::
881 Setting and exporting this environment variable tells Git to
882 ignore replacement refs and do not replace Git objects.
883
eee7f4a2 884`GIT_LITERAL_PATHSPECS`::
80f0b3f3 885 Setting this Boolean environment variable to true will cause Git to treat all
823ab40f
JK
886 pathspecs literally, rather than as glob patterns. For example,
887 running `GIT_LITERAL_PATHSPECS=1 git log -- '*.c'` will search
888 for commits that touch the path `*.c`, not any paths that the
889 glob `*.c` matches. You might want this if you are feeding
2de9b711 890 literal paths to Git (e.g., paths previously given to you by
823ab40f
JK
891 `git ls-tree`, `--raw` diff output, etc).
892
eee7f4a2 893`GIT_GLOB_PATHSPECS`::
80f0b3f3 894 Setting this Boolean environment variable to true will cause Git to treat all
bd30c2e4
NTND
895 pathspecs as glob patterns (aka "glob" magic).
896
eee7f4a2 897`GIT_NOGLOB_PATHSPECS`::
80f0b3f3 898 Setting this Boolean environment variable to true will cause Git to treat all
bd30c2e4
NTND
899 pathspecs as literal (aka "literal" magic).
900
eee7f4a2 901`GIT_ICASE_PATHSPECS`::
80f0b3f3 902 Setting this Boolean environment variable to true will cause Git to treat all
93d93537
NTND
903 pathspecs as case-insensitive.
904
e6d5479e
JH
905`GIT_NO_LAZY_FETCH`::
906 Setting this Boolean environment variable to true tells Git
907 not to lazily fetch missing objects from the promisor remote
908 on demand.
909
eee7f4a2 910`GIT_REFLOG_ACTION`::
c3e2d189
JH
911 When a ref is updated, reflog entries are created to keep
912 track of the reason why the ref was updated (which is
913 typically the name of the high-level command that updated
914 the ref), in addition to the old and new values of the ref.
915 A scripted Porcelain command can use set_reflog_action
916 helper function in `git-sh-setup` to set its name to this
917 variable when it is invoked as the top level command by the
918 end user, to be recorded in the body of the reflog.
919
eee7f4a2 920`GIT_REF_PARANOIA`::
80f0b3f3 921 If this Boolean environment variable is set to false, ignore broken or badly named refs when iterating
968f12fd
JK
922 over lists of refs. Normally Git will try to include any such
923 refs, which may cause some operations to fail. This is usually
924 preferable, as potentially destructive operations (e.g.,
925 linkgit:git-prune[1]) are better off aborting rather than
926 ignoring broken refs (and thus considering the history they
927 point to as not worth saving). The default value is `1` (i.e.,
928 be paranoid about detecting and aborting all operations). You
929 should not normally need to set this to `0`, but it may be
930 useful when trying to salvage data from a corrupted repository.
49672f26 931
e04838ea
PS
932`GIT_COMMIT_GRAPH_PARANOIA`::
933 When loading a commit object from the commit-graph, Git performs an
934 existence check on the object in the object database. This is done to
935 avoid issues with stale commit-graphs that contain references to
936 already-deleted commits, but comes with a performance penalty.
937+
938The default is "true", which enables the aforementioned behavior.
939Setting this to "false" disables the existence check. This can lead to
940a performance improvement at the cost of consistency.
941
eee7f4a2 942`GIT_ALLOW_PROTOCOL`::
f1762d77
BW
943 If set to a colon-separated list of protocols, behave as if
944 `protocol.allow` is set to `never`, and each of the listed
945 protocols has `protocol.<name>.allow` set to `always`
559c2c3d 946 (overriding any existing configuration). See the description of
f1762d77
BW
947 `protocol.allow` in linkgit:git-config[1] for more details.
948
949`GIT_PROTOCOL_FROM_USER`::
80f0b3f3 950 Set this Boolean environment variable to false to prevent protocols used by fetch/push/clone which are
f1762d77
BW
951 configured to the `user` state. This is useful to restrict recursive
952 submodule initialization from an untrusted repository or for programs
953 which feed potentially-untrusted URLS to git commands. See
954 linkgit:git-config[1] for more details.
823ab40f 955
373d70ef
BW
956`GIT_PROTOCOL`::
957 For internal use only. Used in handshaking the wire protocol.
958 Contains a colon ':' separated list of keys with optional values
959 'key[=value]'. Presence of unknown keys and values must be
960 ignored.
2834a72d
JK
961+
962Note that servers may need to be configured to allow this variable to
963pass over some transports. It will be propagated automatically when
964accessing local repositories (i.e., `file://` or a filesystem path), as
965well as over the `git://` protocol. For git-over-http, it should work
966automatically in most configurations, but see the discussion in
967linkgit:git-http-backend[1]. For git-over-ssh, the ssh server may need
968to be configured to allow clients to pass this variable (e.g., by using
969`AcceptEnv GIT_PROTOCOL` with OpenSSH).
970+
971This configuration is optional. If the variable is not propagated, then
972clients will fall back to the original "v0" protocol (but may miss out
973on some performance improvements or features). This variable currently
974only affects clones and fetches; it is not yet used for pushes (but may
975be in the future).
373d70ef 976
27344d6a 977`GIT_OPTIONAL_LOCKS`::
80f0b3f3 978 If this Boolean environment variable is set to false, Git will complete any requested operation without
27344d6a
JK
979 performing any optional sub-operations that require taking a lock.
980 For example, this will prevent `git status` from refreshing the
981 index as a side effect. This is useful for processes running in
982 the background which do not want to cause lock contention with
983 other operations on the repository. Defaults to `1`.
984
b2f55717
JS
985`GIT_REDIRECT_STDIN`::
986`GIT_REDIRECT_STDOUT`::
987`GIT_REDIRECT_STDERR`::
988 Windows-only: allow redirecting the standard input/output/error
989 handles to paths specified by the environment variables. This is
990 particularly useful in multi-threaded applications where the
991 canonical way to pass standard handles via `CreateProcess()` is
992 not an option because it would require the handles to be marked
993 inheritable (and consequently *every* spawned process would
994 inherit them, possibly blocking regular Git operations). The
995 primary intended use case is to use named pipes for communication
996 (e.g. `\\.\pipe\my-git-stdin-123`).
997+
998Two special values are supported: `off` will simply close the
999corresponding standard handle, and if `GIT_REDIRECT_STDERR` is
1000`2>&1`, standard error will be redirected to the same handle as
1001standard output.
1002
a2cd709d
AR
1003`GIT_PRINT_SHA1_ELLIPSIS` (deprecated)::
1004 If set to `yes`, print an ellipsis following an
1005 (abbreviated) SHA-1 value. This affects indications of
1006 detached HEADs (linkgit:git-checkout[1]) and the raw
1007 diff output (linkgit:git-diff[1]). Printing an
1008 ellipsis in the cases mentioned is no longer considered
1009 adequate and support for it is likely to be removed in the
1010 foreseeable future (along with the variable).
1011
8db9307c
JH
1012Discussion[[Discussion]]
1013------------------------
40dac517
BF
1014
1015More detail on the following is available from the
2de9b711 1016link:user-manual.html#git-concepts[Git concepts chapter of the
6998e4db 1017user-manual] and linkgit:gitcore-tutorial[7].
40dac517 1018
2de9b711 1019A Git project normally consists of a working directory with a ".git"
40dac517
BF
1020subdirectory at the top level. The .git directory contains, among other
1021things, a compressed object database representing the complete history
1022of the project, an "index" file which links that history to the current
1023contents of the working tree, and named pointers into that history such
1024as tags and branch heads.
1025
1026The object database contains objects of three main types: blobs, which
1027hold file data; trees, which point to blobs and other trees to build up
02ff6250 1028directory hierarchies; and commits, which each reference a single tree
40dac517
BF
1029and some number of parent commits.
1030
1031The commit, equivalent to what other systems call a "changeset" or
1032"version", represents a step in the project's history, and each parent
1033represents an immediately preceding step. Commits with more than one
1034parent represent merges of independent lines of development.
1035
d5fa1f1a 1036All objects are named by the SHA-1 hash of their contents, normally
40dac517
BF
1037written as a string of 40 hex digits. Such names are globally unique.
1038The entire history leading up to a commit can be vouched for by signing
1039just that commit. A fourth object type, the tag, is provided for this
1040purpose.
1041
1042When first created, objects are stored in individual files, but for
1043efficiency may later be compressed together into "pack files".
1044
1045Named pointers called refs mark interesting points in history. A ref
d5fa1f1a
TA
1046may contain the SHA-1 name of an object or the name of another ref. Refs
1047with names beginning `ref/head/` contain the SHA-1 name of the most
1048recent commit (or "head") of a branch under development. SHA-1 names of
40dac517
BF
1049tags of interest are stored under `ref/tags/`. A special ref named
1050`HEAD` contains the name of the currently checked-out branch.
1051
1052The index file is initialized with a list of all paths and, for each
1053path, a blob object and a set of attributes. The blob object represents
1054the contents of the file as of the head of the current branch. The
1055attributes (last modified time, size, etc.) are taken from the
1056corresponding file in the working tree. Subsequent changes to the
1057working tree can be found by comparing these attributes. The index may
1058be updated with new content, and new commits may be created from the
1059content stored in the index.
1060
1061The index is also capable of storing multiple entries (called "stages")
1062for a given pathname. These stages are used to hold the various
1063unmerged version of a file when a merge is in progress.
6c84e2e0 1064
7687ae98
JH
1065FURTHER DOCUMENTATION
1066---------------------
1067
1068See the references in the "description" section to get started
2de9b711 1069using Git. The following is probably more detail than necessary
7687ae98
JH
1070for a first-time user.
1071
2de9b711 1072The link:user-manual.html#git-concepts[Git concepts chapter of the
7687ae98 1073user-manual] and linkgit:gitcore-tutorial[7] both provide
2de9b711 1074introductions to the underlying Git architecture.
7687ae98
JH
1075
1076See linkgit:gitworkflows[7] for an overview of recommended workflows.
1077
1078See also the link:howto-index.html[howto] documents for some useful
1079examples.
1080
1081The internals are documented in the
48a8c26c 1082link:technical/api-index.html[Git API documentation].
7687ae98
JH
1083
1084Users migrating from CVS may also want to
1085read linkgit:gitcvs-migration[7].
1086
1087
cb22bc44
AE
1088Authors
1089-------
48bb914e 1090Git was started by Linus Torvalds, and is currently maintained by Junio
2de9b711 1091C Hamano. Numerous contributions have come from the Git mailing list
405869d0 1092<git@vger.kernel.org>. http://www.openhub.net/p/git/contributors/summary
6ecc01f2
JH
1093gives you a more complete list of contributors.
1094
1095If you have a clone of git.git itself, the
d8f708f8
JK
1096output of linkgit:git-shortlog[1] and linkgit:git-blame[1] can show you
1097the authors for specific parts of the project.
2cf565c5 1098
c97ca277
JH
1099Reporting Bugs
1100--------------
1101
1102Report bugs to the Git mailing list <git@vger.kernel.org> where the
1103development and maintenance is primarily done. You do not have to be
c56170a0 1104subscribed to the list to send a message there. See the list archive
46c67492 1105at https://lore.kernel.org/git for previous bug reports and other
c56170a0 1106discussions.
c97ca277 1107
2caa7b8d
ÆAB
1108Issues which are security relevant should be disclosed privately to
1109the Git Security mailing list <git-security@googlegroups.com>.
1110
497c8331
CC
1111SEE ALSO
1112--------
1113linkgit:gittutorial[7], linkgit:gittutorial-2[7],
673151a9 1114linkgit:giteveryday[7], linkgit:gitcvs-migration[7],
497c8331 1115linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
801a011d
TR
1116linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
1117linkgit:gitworkflows[7]
497c8331 1118
2cf565c5
DG
1119GIT
1120---
9e1f0a85 1121Part of the linkgit:git[1] suite