1GIT(1)                            Git Manual                            GIT(1)
2
3
4

NAME

6       git - the stupid content tracker
7

SYNOPSIS

9       git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]
10           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
11           [-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare]
12           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
13           [--super-prefix=<path>] [--config-env=<name>=<envvar>]
14           <command> [<args>]
15

DESCRIPTION

17       Git is a fast, scalable, distributed revision control system with an
18       unusually rich command set that provides both high-level operations and
19       full access to internals.
20
21       See gittutorial(7) to get started, then see giteveryday(7) for a useful
22       minimum set of commands. The Git User’s Manual[1] has a more in-depth
23       introduction.
24
25       After you mastered the basic concepts, you can come back to this page
26       to learn what commands Git offers. You can learn more about individual
27       Git commands with "git help command". gitcli(7) manual page gives you
28       an overview of the command-line command syntax.
29
30       A formatted and hyperlinked copy of the latest Git documentation can be
31       viewed at https://git.github.io/htmldocs/git.html or
32       https://git-scm.com/docs.
33

OPTIONS

35       -v, --version
36           Prints the Git suite version that the git program came from.
37
38           This option is internally converted to git version ...  and accepts
39           the same options as the git-version(1) command. If --help is also
40           given, it takes precedence over --version.
41
42       -h, --help
43           Prints the synopsis and a list of the most commonly used commands.
44           If the option --all or -a is given then all available commands are
45           printed. If a Git command is named this option will bring up the
46           manual page for that command.
47
48           Other options are available to control how the manual page is
49           displayed. See git-help(1) for more information, because git --help
50           ...  is converted internally into git help ....
51
52       -C <path>
53           Run as if git was started in <path> instead of the current working
54           directory. When multiple -C options are given, each subsequent
55           non-absolute -C <path> is interpreted relative to the preceding -C
56           <path>. If <path> is present but empty, e.g.  -C "", then the
57           current working directory is left unchanged.
58
59           This option affects options that expect path name like --git-dir
60           and --work-tree in that their interpretations of the path names
61           would be made relative to the working directory caused by the -C
62           option. For example the following invocations are equivalent:
63
64               git --git-dir=a.git --work-tree=b -C c status
65               git --git-dir=c/a.git --work-tree=c/b status
66
67       -c <name>=<value>
68           Pass a configuration parameter to the command. The value given will
69           override values from configuration files. The <name> is expected in
70           the same format as listed by git config (subkeys separated by
71           dots).
72
73           Note that omitting the = in git -c foo.bar ...  is allowed and sets
74           foo.bar to the boolean true value (just like [foo]bar would in a
75           config file). Including the equals but with an empty value (like
76           git -c foo.bar= ...) sets foo.bar to the empty string which git
77           config --type=bool will convert to false.
78
79       --config-env=<name>=<envvar>
80           Like -c <name>=<value>, give configuration variable <name> a value,
81           where <envvar> is the name of an environment variable from which to
82           retrieve the value. Unlike -c there is no shortcut for directly
83           setting the value to an empty string, instead the environment
84           variable itself must be set to the empty string. It is an error if
85           the <envvar> does not exist in the environment.  <envvar> may not
86           contain an equals sign to avoid ambiguity with <name> containing
87           one.
88
89           This is useful for cases where you want to pass transitory
90           configuration options to git, but are doing so on OS’s where other
91           processes might be able to read your cmdline (e.g.
92           /proc/self/cmdline), but not your environ (e.g.
93           /proc/self/environ). That behavior is the default on Linux, but may
94           not be on your system.
95
96           Note that this might add security for variables such as
97           http.extraHeader where the sensitive information is part of the
98           value, but not e.g.  url.<base>.insteadOf where the sensitive
99           information can be part of the key.
100
101       --exec-path[=<path>]
102           Path to wherever your core Git programs are installed. This can
103           also be controlled by setting the GIT_EXEC_PATH environment
104           variable. If no path is given, git will print the current setting
105           and then exit.
106
107       --html-path
108           Print the path, without trailing slash, where Git’s HTML
109           documentation is installed and exit.
110
111       --man-path
112           Print the manpath (see man(1)) for the man pages for this version
113           of Git and exit.
114
115       --info-path
116           Print the path where the Info files documenting this version of Git
117           are installed and exit.
118
119       -p, --paginate
120           Pipe all output into less (or if set, $PAGER) if standard output is
121           a terminal. This overrides the pager.<cmd> configuration options
122           (see the "Configuration Mechanism" section below).
123
124       -P, --no-pager
125           Do not pipe Git output into a pager.
126
127       --git-dir=<path>
128           Set the path to the repository (".git" directory). This can also be
129           controlled by setting the GIT_DIR environment variable. It can be
130           an absolute path or relative path to current working directory.
131
132           Specifying the location of the ".git" directory using this option
133           (or GIT_DIR environment variable) turns off the repository
134           discovery that tries to find a directory with ".git" subdirectory
135           (which is how the repository and the top-level of the working tree
136           are discovered), and tells Git that you are at the top level of the
137           working tree. If you are not at the top-level directory of the
138           working tree, you should tell Git where the top-level of the
139           working tree is, with the --work-tree=<path> option (or
140           GIT_WORK_TREE environment variable)
141
142           If you just want to run git as if it was started in <path> then use
143           git -C <path>.
144
145       --work-tree=<path>
146           Set the path to the working tree. It can be an absolute path or a
147           path relative to the current working directory. This can also be
148           controlled by setting the GIT_WORK_TREE environment variable and
149           the core.worktree configuration variable (see core.worktree in git-
150           config(1) for a more detailed discussion).
151
152       --namespace=<path>
153           Set the Git namespace. See gitnamespaces(7) for more details.
154           Equivalent to setting the GIT_NAMESPACE environment variable.
155
156       --super-prefix=<path>
157           Currently for internal use only. Set a prefix which gives a path
158           from above a repository down to its root. One use is to give
159           submodules context about the superproject that invoked it.
160
161       --bare
162           Treat the repository as a bare repository. If GIT_DIR environment
163           is not set, it is set to the current working directory.
164
165       --no-replace-objects
166           Do not use replacement refs to replace Git objects. See git-
167           replace(1) for more information.
168
169       --literal-pathspecs
170           Treat pathspecs literally (i.e. no globbing, no pathspec magic).
171           This is equivalent to setting the GIT_LITERAL_PATHSPECS environment
172           variable to 1.
173
174       --glob-pathspecs
175           Add "glob" magic to all pathspec. This is equivalent to setting the
176           GIT_GLOB_PATHSPECS environment variable to 1. Disabling globbing on
177           individual pathspecs can be done using pathspec magic ":(literal)"
178
179       --noglob-pathspecs
180           Add "literal" magic to all pathspec. This is equivalent to setting
181           the GIT_NOGLOB_PATHSPECS environment variable to 1. Enabling
182           globbing on individual pathspecs can be done using pathspec magic
183           ":(glob)"
184
185       --icase-pathspecs
186           Add "icase" magic to all pathspec. This is equivalent to setting
187           the GIT_ICASE_PATHSPECS environment variable to 1.
188
189       --no-optional-locks
190           Do not perform optional operations that require locks. This is
191           equivalent to setting the GIT_OPTIONAL_LOCKS to 0.
192
193       --list-cmds=group[,group...]
194           List commands by group. This is an internal/experimental option and
195           may change or be removed in the future. Supported groups are:
196           builtins, parseopt (builtin commands that use parse-options), main
197           (all commands in libexec directory), others (all other commands in
198           $PATH that have git- prefix), list-<category> (see categories in
199           command-list.txt), nohelpers (exclude helper commands), alias and
200           config (retrieve command list from config variable
201           completion.commands)
202

GIT COMMANDS

204       We divide Git into high level ("porcelain") commands and low level
205       ("plumbing") commands.
206

HIGH-LEVEL COMMANDS (PORCELAIN)

208       We separate the porcelain commands into the main commands and some
209       ancillary user utilities.
210
211   Main porcelain commands
212       git-add(1)
213           Add file contents to the index.
214
215       git-am(1)
216           Apply a series of patches from a mailbox.
217
218       git-archive(1)
219           Create an archive of files from a named tree.
220
221       git-bisect(1)
222           Use binary search to find the commit that introduced a bug.
223
224       git-branch(1)
225           List, create, or delete branches.
226
227       git-bundle(1)
228           Move objects and refs by archive.
229
230       git-checkout(1)
231           Switch branches or restore working tree files.
232
233       git-cherry-pick(1)
234           Apply the changes introduced by some existing commits.
235
236       git-citool(1)
237           Graphical alternative to git-commit.
238
239       git-clean(1)
240           Remove untracked files from the working tree.
241
242       git-clone(1)
243           Clone a repository into a new directory.
244
245       git-commit(1)
246           Record changes to the repository.
247
248       git-describe(1)
249           Give an object a human readable name based on an available ref.
250
251       git-diff(1)
252           Show changes between commits, commit and working tree, etc.
253
254       git-fetch(1)
255           Download objects and refs from another repository.
256
257       git-format-patch(1)
258           Prepare patches for e-mail submission.
259
260       git-gc(1)
261           Cleanup unnecessary files and optimize the local repository.
262
263       git-grep(1)
264           Print lines matching a pattern.
265
266       git-gui(1)
267           A portable graphical interface to Git.
268
269       git-init(1)
270           Create an empty Git repository or reinitialize an existing one.
271
272       git-log(1)
273           Show commit logs.
274
275       git-maintenance(1)
276           Run tasks to optimize Git repository data.
277
278       git-merge(1)
279           Join two or more development histories together.
280
281       git-mv(1)
282           Move or rename a file, a directory, or a symlink.
283
284       git-notes(1)
285           Add or inspect object notes.
286
287       git-pull(1)
288           Fetch from and integrate with another repository or a local branch.
289
290       git-push(1)
291           Update remote refs along with associated objects.
292
293       git-range-diff(1)
294           Compare two commit ranges (e.g. two versions of a branch).
295
296       git-rebase(1)
297           Reapply commits on top of another base tip.
298
299       git-reset(1)
300           Reset current HEAD to the specified state.
301
302       git-restore(1)
303           Restore working tree files.
304
305       git-revert(1)
306           Revert some existing commits.
307
308       git-rm(1)
309           Remove files from the working tree and from the index.
310
311       git-shortlog(1)
312           Summarize git log output.
313
314       git-show(1)
315           Show various types of objects.
316
317       git-sparse-checkout(1)
318           Reduce your working tree to a subset of tracked files.
319
320       git-stash(1)
321           Stash the changes in a dirty working directory away.
322
323       git-status(1)
324           Show the working tree status.
325
326       git-submodule(1)
327           Initialize, update or inspect submodules.
328
329       git-switch(1)
330           Switch branches.
331
332       git-tag(1)
333           Create, list, delete or verify a tag object signed with GPG.
334
335       git-worktree(1)
336           Manage multiple working trees.
337
338       gitk(1)
339           The Git repository browser.
340
341       scalar(1)
342           A tool for managing large Git repositories.
343
344   Ancillary Commands
345       Manipulators:
346
347       git-config(1)
348           Get and set repository or global options.
349
350       git-fast-export(1)
351           Git data exporter.
352
353       git-fast-import(1)
354           Backend for fast Git data importers.
355
356       git-filter-branch(1)
357           Rewrite branches.
358
359       git-mergetool(1)
360           Run merge conflict resolution tools to resolve merge conflicts.
361
362       git-pack-refs(1)
363           Pack heads and tags for efficient repository access.
364
365       git-prune(1)
366           Prune all unreachable objects from the object database.
367
368       git-reflog(1)
369           Manage reflog information.
370
371       git-remote(1)
372           Manage set of tracked repositories.
373
374       git-repack(1)
375           Pack unpacked objects in a repository.
376
377       git-replace(1)
378           Create, list, delete refs to replace objects.
379
380       Interrogators:
381
382       git-annotate(1)
383           Annotate file lines with commit information.
384
385       git-blame(1)
386           Show what revision and author last modified each line of a file.
387
388       git-bugreport(1)
389           Collect information for user to file a bug report.
390
391       git-count-objects(1)
392           Count unpacked number of objects and their disk consumption.
393
394       git-diagnose(1)
395           Generate a zip archive of diagnostic information.
396
397       git-difftool(1)
398           Show changes using common diff tools.
399
400       git-fsck(1)
401           Verifies the connectivity and validity of the objects in the
402           database.
403
404       git-help(1)
405           Display help information about Git.
406
407       git-instaweb(1)
408           Instantly browse your working repository in gitweb.
409
410       git-merge-tree(1)
411           Perform merge without touching index or working tree.
412
413       git-rerere(1)
414           Reuse recorded resolution of conflicted merges.
415
416       git-show-branch(1)
417           Show branches and their commits.
418
419       git-verify-commit(1)
420           Check the GPG signature of commits.
421
422       git-verify-tag(1)
423           Check the GPG signature of tags.
424
425       git-version(1)
426           Display version information about Git.
427
428       git-whatchanged(1)
429           Show logs with difference each commit introduces.
430
431       gitweb(1)
432           Git web interface (web frontend to Git repositories).
433
434   Interacting with Others
435       These commands are to interact with foreign SCM and with other people
436       via patch over e-mail.
437
438       git-cvsexportcommit(1)
439           Export a single commit to a CVS checkout.
440
441       git-cvsimport(1)
442           Salvage your data out of another SCM people love to hate.
443
444       git-cvsserver(1)
445           A CVS server emulator for Git.
446
447       git-imap-send(1)
448           Send a collection of patches from stdin to an IMAP folder.
449
450       git-p4(1)
451           Import from and submit to Perforce repositories.
452
453       git-quiltimport(1)
454           Applies a quilt patchset onto the current branch.
455
456       git-request-pull(1)
457           Generates a summary of pending changes.
458
459       git-send-email(1)
460           Send a collection of patches as emails.
461
462       git-svn(1)
463           Bidirectional operation between a Subversion repository and Git.
464
465   Reset, restore and revert
466       There are three commands with similar names: git reset, git restore and
467       git revert.
468
469git-revert(1) is about making a new commit that reverts the changes
470           made by other commits.
471
472git-restore(1) is about restoring files in the working tree from
473           either the index or another commit. This command does not update
474           your branch. The command can also be used to restore files in the
475           index from another commit.
476
477git-reset(1) is about updating your branch, moving the tip in order
478           to add or remove commits from the branch. This operation changes
479           the commit history.
480
481           git reset can also be used to restore the index, overlapping with
482           git restore.
483

LOW-LEVEL COMMANDS (PLUMBING)

485       Although Git includes its own porcelain layer, its low-level commands
486       are sufficient to support development of alternative porcelains.
487       Developers of such porcelains might start by reading about git-update-
488       index(1) and git-read-tree(1).
489
490       The interface (input, output, set of options and the semantics) to
491       these low-level commands are meant to be a lot more stable than
492       Porcelain level commands, because these commands are primarily for
493       scripted use. The interface to Porcelain commands on the other hand are
494       subject to change in order to improve the end user experience.
495
496       The following description divides the low-level commands into commands
497       that manipulate objects (in the repository, index, and working tree),
498       commands that interrogate and compare objects, and commands that move
499       objects and references between repositories.
500
501   Manipulation commands
502       git-apply(1)
503           Apply a patch to files and/or to the index.
504
505       git-checkout-index(1)
506           Copy files from the index to the working tree.
507
508       git-commit-graph(1)
509           Write and verify Git commit-graph files.
510
511       git-commit-tree(1)
512           Create a new commit object.
513
514       git-hash-object(1)
515           Compute object ID and optionally creates a blob from a file.
516
517       git-index-pack(1)
518           Build pack index file for an existing packed archive.
519
520       git-merge-file(1)
521           Run a three-way file merge.
522
523       git-merge-index(1)
524           Run a merge for files needing merging.
525
526       git-mktag(1)
527           Creates a tag object with extra validation.
528
529       git-mktree(1)
530           Build a tree-object from ls-tree formatted text.
531
532       git-multi-pack-index(1)
533           Write and verify multi-pack-indexes.
534
535       git-pack-objects(1)
536           Create a packed archive of objects.
537
538       git-prune-packed(1)
539           Remove extra objects that are already in pack files.
540
541       git-read-tree(1)
542           Reads tree information into the index.
543
544       git-symbolic-ref(1)
545           Read, modify and delete symbolic refs.
546
547       git-unpack-objects(1)
548           Unpack objects from a packed archive.
549
550       git-update-index(1)
551           Register file contents in the working tree to the index.
552
553       git-update-ref(1)
554           Update the object name stored in a ref safely.
555
556       git-write-tree(1)
557           Create a tree object from the current index.
558
559   Interrogation commands
560       git-cat-file(1)
561           Provide content or type and size information for repository
562           objects.
563
564       git-cherry(1)
565           Find commits yet to be applied to upstream.
566
567       git-diff-files(1)
568           Compares files in the working tree and the index.
569
570       git-diff-index(1)
571           Compare a tree to the working tree or index.
572
573       git-diff-tree(1)
574           Compares the content and mode of blobs found via two tree objects.
575
576       git-for-each-ref(1)
577           Output information on each ref.
578
579       git-for-each-repo(1)
580           Run a Git command on a list of repositories.
581
582       git-get-tar-commit-id(1)
583           Extract commit ID from an archive created using git-archive.
584
585       git-ls-files(1)
586           Show information about files in the index and the working tree.
587
588       git-ls-remote(1)
589           List references in a remote repository.
590
591       git-ls-tree(1)
592           List the contents of a tree object.
593
594       git-merge-base(1)
595           Find as good common ancestors as possible for a merge.
596
597       git-name-rev(1)
598           Find symbolic names for given revs.
599
600       git-pack-redundant(1)
601           Find redundant pack files.
602
603       git-rev-list(1)
604           Lists commit objects in reverse chronological order.
605
606       git-rev-parse(1)
607           Pick out and massage parameters.
608
609       git-show-index(1)
610           Show packed archive index.
611
612       git-show-ref(1)
613           List references in a local repository.
614
615       git-unpack-file(1)
616           Creates a temporary file with a blob’s contents.
617
618       git-var(1)
619           Show a Git logical variable.
620
621       git-verify-pack(1)
622           Validate packed Git archive files.
623
624       In general, the interrogate commands do not touch the files in the
625       working tree.
626
627   Syncing repositories
628       git-daemon(1)
629           A really simple server for Git repositories.
630
631       git-fetch-pack(1)
632           Receive missing objects from another repository.
633
634       git-http-backend(1)
635           Server side implementation of Git over HTTP.
636
637       git-send-pack(1)
638           Push objects over Git protocol to another repository.
639
640       git-update-server-info(1)
641           Update auxiliary info file to help dumb servers.
642
643       The following are helper commands used by the above; end users
644       typically do not use them directly.
645
646       git-http-fetch(1)
647           Download from a remote Git repository via HTTP.
648
649       git-http-push(1)
650           Push objects over HTTP/DAV to another repository.
651
652       git-receive-pack(1)
653           Receive what is pushed into the repository.
654
655       git-shell(1)
656           Restricted login shell for Git-only SSH access.
657
658       git-upload-archive(1)
659           Send archive back to git-archive.
660
661       git-upload-pack(1)
662           Send objects packed back to git-fetch-pack.
663
664   Internal helper commands
665       These are internal helper commands used by other commands; end users
666       typically do not use them directly.
667
668       git-check-attr(1)
669           Display gitattributes information.
670
671       git-check-ignore(1)
672           Debug gitignore / exclude files.
673
674       git-check-mailmap(1)
675           Show canonical names and email addresses of contacts.
676
677       git-check-ref-format(1)
678           Ensures that a reference name is well formed.
679
680       git-column(1)
681           Display data in columns.
682
683       git-credential(1)
684           Retrieve and store user credentials.
685
686       git-credential-cache(1)
687           Helper to temporarily store passwords in memory.
688
689       git-credential-store(1)
690           Helper to store credentials on disk.
691
692       git-fmt-merge-msg(1)
693           Produce a merge commit message.
694
695       git-hook(1)
696           Run git hooks.
697
698       git-interpret-trailers(1)
699           Add or parse structured information in commit messages.
700
701       git-mailinfo(1)
702           Extracts patch and authorship from a single e-mail message.
703
704       git-mailsplit(1)
705           Simple UNIX mbox splitter program.
706
707       git-merge-one-file(1)
708           The standard helper program to use with git-merge-index.
709
710       git-patch-id(1)
711           Compute unique ID for a patch.
712
713       git-sh-i18n(1)
714           Git’s i18n setup code for shell scripts.
715
716       git-sh-setup(1)
717           Common Git shell script setup code.
718
719       git-stripspace(1)
720           Remove unnecessary whitespace.
721

GUIDES

723       The following documentation pages are guides about Git concepts.
724
725       gitcore-tutorial(7)
726           A Git core tutorial for developers.
727
728       gitcredentials(7)
729           Providing usernames and passwords to Git.
730
731       gitcvs-migration(7)
732           Git for CVS users.
733
734       gitdiffcore(7)
735           Tweaking diff output.
736
737       giteveryday(7)
738           A useful minimum set of commands for Everyday Git.
739
740       gitfaq(7)
741           Frequently asked questions about using Git.
742
743       gitglossary(7)
744           A Git Glossary.
745
746       gitnamespaces(7)
747           Git namespaces.
748
749       gitremote-helpers(7)
750           Helper programs to interact with remote repositories.
751
752       gitsubmodules(7)
753           Mounting one repository inside another.
754
755       gittutorial(7)
756           A tutorial introduction to Git.
757
758       gittutorial-2(7)
759           A tutorial introduction to Git: part two.
760
761       gitworkflows(7)
762           An overview of recommended workflows with Git.
763

REPOSITORY, COMMAND AND FILE INTERFACES

765       This documentation discusses repository and command interfaces which
766       users are expected to interact with directly. See --user-formats in
767       git-help(1) for more details on the criteria.
768
769       gitattributes(5)
770           Defining attributes per path.
771
772       gitcli(7)
773           Git command-line interface and conventions.
774
775       githooks(5)
776           Hooks used by Git.
777
778       gitignore(5)
779           Specifies intentionally untracked files to ignore.
780
781       gitmailmap(5)
782           Map author/committer names and/or E-Mail addresses.
783
784       gitmodules(5)
785           Defining submodule properties.
786
787       gitrepository-layout(5)
788           Git Repository Layout.
789
790       gitrevisions(7)
791           Specifying revisions and ranges for Git.
792

FILE FORMATS, PROTOCOLS AND OTHER DEVELOPER INTERFACES

794       This documentation discusses file formats, over-the-wire protocols and
795       other git developer interfaces. See --developer-interfaces in git-
796       help(1).
797
798       gitformat-bundle(5)
799           The bundle file format.
800
801       gitformat-chunk(5)
802           Chunk-based file formats.
803
804       gitformat-commit-graph(5)
805           Git commit-graph format.
806
807       gitformat-index(5)
808           Git index format.
809
810       gitformat-pack(5)
811           Git pack format.
812
813       gitformat-signature(5)
814           Git cryptographic signature formats.
815
816       gitprotocol-capabilities(5)
817           Protocol v0 and v1 capabilities.
818
819       gitprotocol-common(5)
820           Things common to various protocols.
821
822       gitprotocol-http(5)
823           Git HTTP-based protocols.
824
825       gitprotocol-pack(5)
826           How packs are transferred over-the-wire.
827
828       gitprotocol-v2(5)
829           Git Wire Protocol, Version 2.
830

CONFIGURATION MECHANISM

832       Git uses a simple text format to store customizations that are per
833       repository and are per user. Such a configuration file may look like
834       this:
835
836           #
837           # A '#' or ';' character indicates a comment.
838           #
839
840           ; core variables
841           [core]
842                   ; Don't trust file modes
843                   filemode = false
844
845           ; user identity
846           [user]
847                   name = "Junio C Hamano"
848                   email = "gitster@pobox.com"
849
850       Various commands read from the configuration file and adjust their
851       operation accordingly. See git-config(1) for a list and more details
852       about the configuration mechanism.
853

IDENTIFIER TERMINOLOGY

855       <object>
856           Indicates the object name for any type of object.
857
858       <blob>
859           Indicates a blob object name.
860
861       <tree>
862           Indicates a tree object name.
863
864       <commit>
865           Indicates a commit object name.
866
867       <tree-ish>
868           Indicates a tree, commit or tag object name. A command that takes a
869           <tree-ish> argument ultimately wants to operate on a <tree> object
870           but automatically dereferences <commit> and <tag> objects that
871           point at a <tree>.
872
873       <commit-ish>
874           Indicates a commit or tag object name. A command that takes a
875           <commit-ish> argument ultimately wants to operate on a <commit>
876           object but automatically dereferences <tag> objects that point at a
877           <commit>.
878
879       <type>
880           Indicates that an object type is required. Currently one of: blob,
881           tree, commit, or tag.
882
883       <file>
884           Indicates a filename - almost always relative to the root of the
885           tree structure GIT_INDEX_FILE describes.
886

SYMBOLIC IDENTIFIERS

888       Any Git command accepting any <object> can also use the following
889       symbolic notation:
890
891       HEAD
892           indicates the head of the current branch.
893
894       <tag>
895           a valid tag name (i.e. a refs/tags/<tag> reference).
896
897       <head>
898           a valid head name (i.e. a refs/heads/<head> reference).
899
900       For a more complete list of ways to spell object names, see "SPECIFYING
901       REVISIONS" section in gitrevisions(7).
902

FILE/DIRECTORY STRUCTURE

904       Please see the gitrepository-layout(5) document.
905
906       Read githooks(5) for more details about each hook.
907
908       Higher level SCMs may provide and manage additional information in the
909       $GIT_DIR.
910

TERMINOLOGY

912       Please see gitglossary(7).
913

ENVIRONMENT VARIABLES

915       Various Git commands pay attention to environment variables and change
916       their behavior. The environment variables marked as "Boolean" take
917       their values the same way as Boolean valued configuration variables,
918       e.g. "true", "yes", "on" and positive numbers are taken as "yes".
919
920       Here are the variables:
921
922   The Git Repository
923       These environment variables apply to all core Git commands. Nb: it is
924       worth noting that they may be used/overridden by SCMS sitting above Git
925       so take care if using a foreign front-end.
926
927       GIT_INDEX_FILE
928           This environment variable specifies an alternate index file. If not
929           specified, the default of $GIT_DIR/index is used.
930
931       GIT_INDEX_VERSION
932           This environment variable specifies what index version is used when
933           writing the index file out. It won’t affect existing index files.
934           By default index file version 2 or 3 is used. See git-update-
935           index(1) for more information.
936
937       GIT_OBJECT_DIRECTORY
938           If the object storage directory is specified via this environment
939           variable then the sha1 directories are created underneath -
940           otherwise the default $GIT_DIR/objects directory is used.
941
942       GIT_ALTERNATE_OBJECT_DIRECTORIES
943           Due to the immutable nature of Git objects, old objects can be
944           archived into shared, read-only directories. This variable
945           specifies a ":" separated (on Windows ";" separated) list of Git
946           object directories which can be used to search for Git objects. New
947           objects will not be written to these directories.
948
949           Entries that begin with " (double-quote) will be interpreted as
950           C-style quoted paths, removing leading and trailing double-quotes
951           and respecting backslash escapes. E.g., the value
952           "path-with-\"-and-:-in-it":vanilla-path has two paths:
953           path-with-"-and-:-in-it and vanilla-path.
954
955       GIT_DIR
956           If the GIT_DIR environment variable is set then it specifies a path
957           to use instead of the default .git for the base of the repository.
958           The --git-dir command-line option also sets this value.
959
960       GIT_WORK_TREE
961           Set the path to the root of the working tree. This can also be
962           controlled by the --work-tree command-line option and the
963           core.worktree configuration variable.
964
965       GIT_NAMESPACE
966           Set the Git namespace; see gitnamespaces(7) for details. The
967           --namespace command-line option also sets this value.
968
969       GIT_CEILING_DIRECTORIES
970           This should be a colon-separated list of absolute paths. If set, it
971           is a list of directories that Git should not chdir up into while
972           looking for a repository directory (useful for excluding
973           slow-loading network directories). It will not exclude the current
974           working directory or a GIT_DIR set on the command line or in the
975           environment. Normally, Git has to read the entries in this list and
976           resolve any symlink that might be present in order to compare them
977           with the current directory. However, if even this access is slow,
978           you can add an empty entry to the list to tell Git that the
979           subsequent entries are not symlinks and needn’t be resolved; e.g.,
980           GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink.
981
982       GIT_DISCOVERY_ACROSS_FILESYSTEM
983           When run in a directory that does not have ".git" repository
984           directory, Git tries to find such a directory in the parent
985           directories to find the top of the working tree, but by default it
986           does not cross filesystem boundaries. This Boolean environment
987           variable can be set to true to tell Git not to stop at filesystem
988           boundaries. Like GIT_CEILING_DIRECTORIES, this will not affect an
989           explicit repository directory set via GIT_DIR or on the command
990           line.
991
992       GIT_COMMON_DIR
993           If this variable is set to a path, non-worktree files that are
994           normally in $GIT_DIR will be taken from this path instead.
995           Worktree-specific files such as HEAD or index are taken from
996           $GIT_DIR. See gitrepository-layout(5) and git-worktree(1) for
997           details. This variable has lower precedence than other path
998           variables such as GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY...
999
1000       GIT_DEFAULT_HASH
1001           If this variable is set, the default hash algorithm for new
1002           repositories will be set to this value. This value is currently
1003           ignored when cloning; the setting of the remote repository is used
1004           instead. The default is "sha1". THIS VARIABLE IS EXPERIMENTAL! See
1005           --object-format in git-init(1).
1006
1007   Git Commits
1008       GIT_AUTHOR_NAME
1009           The human-readable name used in the author identity when creating
1010           commit or tag objects, or when writing reflogs. Overrides the
1011           user.name and author.name configuration settings.
1012
1013       GIT_AUTHOR_EMAIL
1014           The email address used in the author identity when creating commit
1015           or tag objects, or when writing reflogs. Overrides the user.email
1016           and author.email configuration settings.
1017
1018       GIT_AUTHOR_DATE
1019           The date used for the author identity when creating commit or tag
1020           objects, or when writing reflogs. See git-commit(1) for valid
1021           formats.
1022
1023       GIT_COMMITTER_NAME
1024           The human-readable name used in the committer identity when
1025           creating commit or tag objects, or when writing reflogs. Overrides
1026           the user.name and committer.name configuration settings.
1027
1028       GIT_COMMITTER_EMAIL
1029           The email address used in the author identity when creating commit
1030           or tag objects, or when writing reflogs. Overrides the user.email
1031           and committer.email configuration settings.
1032
1033       GIT_COMMITTER_DATE
1034           The date used for the committer identity when creating commit or
1035           tag objects, or when writing reflogs. See git-commit(1) for valid
1036           formats.
1037
1038       EMAIL
1039           The email address used in the author and committer identities if no
1040           other relevant environment variable or configuration setting has
1041           been set.
1042
1043   Git Diffs
1044       GIT_DIFF_OPTS
1045           Only valid setting is "--unified=??" or "-u??" to set the number of
1046           context lines shown when a unified diff is created. This takes
1047           precedence over any "-U" or "--unified" option value passed on the
1048           Git diff command line.
1049
1050       GIT_EXTERNAL_DIFF
1051           When the environment variable GIT_EXTERNAL_DIFF is set, the program
1052           named by it is called to generate diffs, and Git does not use its
1053           builtin diff machinery. For a path that is added, removed, or
1054           modified, GIT_EXTERNAL_DIFF is called with 7 parameters:
1055
1056               path old-file old-hex old-mode new-file new-hex new-mode
1057
1058           where:
1059
1060       <old|new>-file
1061           are files GIT_EXTERNAL_DIFF can use to read the contents of
1062           <old|new>,
1063
1064       <old|new>-hex
1065           are the 40-hexdigit SHA-1 hashes,
1066
1067       <old|new>-mode
1068           are the octal representation of the file modes.
1069
1070           The file parameters can point at the user’s working file (e.g.
1071           new-file in "git-diff-files"), /dev/null (e.g.  old-file when a new
1072           file is added), or a temporary file (e.g.  old-file in the index).
1073           GIT_EXTERNAL_DIFF should not worry about unlinking the temporary
1074           file --- it is removed when GIT_EXTERNAL_DIFF exits.
1075
1076           For a path that is unmerged, GIT_EXTERNAL_DIFF is called with 1
1077           parameter, <path>.
1078
1079           For each path GIT_EXTERNAL_DIFF is called, two environment
1080           variables, GIT_DIFF_PATH_COUNTER and GIT_DIFF_PATH_TOTAL are set.
1081
1082       GIT_DIFF_PATH_COUNTER
1083           A 1-based counter incremented by one for every path.
1084
1085       GIT_DIFF_PATH_TOTAL
1086           The total number of paths.
1087
1088   other
1089       GIT_MERGE_VERBOSITY
1090           A number controlling the amount of output shown by the recursive
1091           merge strategy. Overrides merge.verbosity. See git-merge(1)
1092
1093       GIT_PAGER
1094           This environment variable overrides $PAGER. If it is set to an
1095           empty string or to the value "cat", Git will not launch a pager.
1096           See also the core.pager option in git-config(1).
1097
1098       GIT_PROGRESS_DELAY
1099           A number controlling how many seconds to delay before showing
1100           optional progress indicators. Defaults to 2.
1101
1102       GIT_EDITOR
1103           This environment variable overrides $EDITOR and $VISUAL. It is used
1104           by several Git commands when, on interactive mode, an editor is to
1105           be launched. See also git-var(1) and the core.editor option in git-
1106           config(1).
1107
1108       GIT_SEQUENCE_EDITOR
1109           This environment variable overrides the configured Git editor when
1110           editing the todo list of an interactive rebase. See also git-
1111           rebase(1) and the sequence.editor option in git-config(1).
1112
1113       GIT_SSH, GIT_SSH_COMMAND
1114           If either of these environment variables is set then git fetch and
1115           git push will use the specified command instead of ssh when they
1116           need to connect to a remote system. The command-line parameters
1117           passed to the configured command are determined by the ssh variant.
1118           See ssh.variant option in git-config(1) for details.
1119
1120           $GIT_SSH_COMMAND takes precedence over $GIT_SSH, and is interpreted
1121           by the shell, which allows additional arguments to be included.
1122           $GIT_SSH on the other hand must be just the path to a program
1123           (which can be a wrapper shell script, if additional arguments are
1124           needed).
1125
1126           Usually it is easier to configure any desired options through your
1127           personal .ssh/config file. Please consult your ssh documentation
1128           for further details.
1129
1130       GIT_SSH_VARIANT
1131           If this environment variable is set, it overrides Git’s
1132           autodetection whether GIT_SSH/GIT_SSH_COMMAND/core.sshCommand refer
1133           to OpenSSH, plink or tortoiseplink. This variable overrides the
1134           config setting ssh.variant that serves the same purpose.
1135
1136       GIT_SSL_NO_VERIFY
1137           Setting and exporting this environment variable to any value tells
1138           Git not to verify the SSL certificate when fetching or pushing over
1139           HTTPS.
1140
1141       GIT_ASKPASS
1142           If this environment variable is set, then Git commands which need
1143           to acquire passwords or passphrases (e.g. for HTTP or IMAP
1144           authentication) will call this program with a suitable prompt as
1145           command-line argument and read the password from its STDOUT. See
1146           also the core.askPass option in git-config(1).
1147
1148       GIT_TERMINAL_PROMPT
1149           If this Boolean environment variable is set to false, git will not
1150           prompt on the terminal (e.g., when asking for HTTP authentication).
1151
1152       GIT_CONFIG_GLOBAL, GIT_CONFIG_SYSTEM
1153           Take the configuration from the given files instead from global or
1154           system-level configuration files. If GIT_CONFIG_SYSTEM is set, the
1155           system config file defined at build time (usually /etc/gitconfig)
1156           will not be read. Likewise, if GIT_CONFIG_GLOBAL is set, neither
1157           $HOME/.gitconfig nor $XDG_CONFIG_HOME/git/config will be read. Can
1158           be set to /dev/null to skip reading configuration files of the
1159           respective level.
1160
1161       GIT_CONFIG_NOSYSTEM
1162           Whether to skip reading settings from the system-wide
1163           $(prefix)/etc/gitconfig file. This Boolean environment variable can
1164           be used along with $HOME and $XDG_CONFIG_HOME to create a
1165           predictable environment for a picky script, or you can set it to
1166           true to temporarily avoid using a buggy /etc/gitconfig file while
1167           waiting for someone with sufficient permissions to fix it.
1168
1169       GIT_FLUSH
1170           If this environment variable is set to "1", then commands such as
1171           git blame (in incremental mode), git rev-list, git log, git
1172           check-attr and git check-ignore will force a flush of the output
1173           stream after each record have been flushed. If this variable is set
1174           to "0", the output of these commands will be done using completely
1175           buffered I/O. If this environment variable is not set, Git will
1176           choose buffered or record-oriented flushing based on whether stdout
1177           appears to be redirected to a file or not.
1178
1179       GIT_TRACE
1180           Enables general trace messages, e.g. alias expansion, built-in
1181           command execution and external command execution.
1182
1183           If this variable is set to "1", "2" or "true" (comparison is case
1184           insensitive), trace messages will be printed to stderr.
1185
1186           If the variable is set to an integer value greater than 2 and lower
1187           than 10 (strictly) then Git will interpret this value as an open
1188           file descriptor and will try to write the trace messages into this
1189           file descriptor.
1190
1191           Alternatively, if the variable is set to an absolute path (starting
1192           with a / character), Git will interpret this as a file path and
1193           will try to append the trace messages to it.
1194
1195           Unsetting the variable, or setting it to empty, "0" or "false"
1196           (case insensitive) disables trace messages.
1197
1198       GIT_TRACE_FSMONITOR
1199           Enables trace messages for the filesystem monitor extension. See
1200           GIT_TRACE for available trace output options.
1201
1202       GIT_TRACE_PACK_ACCESS
1203           Enables trace messages for all accesses to any packs. For each
1204           access, the pack file name and an offset in the pack is recorded.
1205           This may be helpful for troubleshooting some pack-related
1206           performance problems. See GIT_TRACE for available trace output
1207           options.
1208
1209       GIT_TRACE_PACKET
1210           Enables trace messages for all packets coming in or out of a given
1211           program. This can help with debugging object negotiation or other
1212           protocol issues. Tracing is turned off at a packet starting with
1213           "PACK" (but see GIT_TRACE_PACKFILE below). See GIT_TRACE for
1214           available trace output options.
1215
1216       GIT_TRACE_PACKFILE
1217           Enables tracing of packfiles sent or received by a given program.
1218           Unlike other trace output, this trace is verbatim: no headers, and
1219           no quoting of binary data. You almost certainly want to direct into
1220           a file (e.g., GIT_TRACE_PACKFILE=/tmp/my.pack) rather than
1221           displaying it on the terminal or mixing it with other trace output.
1222
1223           Note that this is currently only implemented for the client side of
1224           clones and fetches.
1225
1226       GIT_TRACE_PERFORMANCE
1227           Enables performance related trace messages, e.g. total execution
1228           time of each Git command. See GIT_TRACE for available trace output
1229           options.
1230
1231       GIT_TRACE_REFS
1232           Enables trace messages for operations on the ref database. See
1233           GIT_TRACE for available trace output options.
1234
1235       GIT_TRACE_SETUP
1236           Enables trace messages printing the .git, working tree and current
1237           working directory after Git has completed its setup phase. See
1238           GIT_TRACE for available trace output options.
1239
1240       GIT_TRACE_SHALLOW
1241           Enables trace messages that can help debugging fetching / cloning
1242           of shallow repositories. See GIT_TRACE for available trace output
1243           options.
1244
1245       GIT_TRACE_CURL
1246           Enables a curl full trace dump of all incoming and outgoing data,
1247           including descriptive information, of the git transport protocol.
1248           This is similar to doing curl --trace-ascii on the command line.
1249           See GIT_TRACE for available trace output options.
1250
1251       GIT_TRACE_CURL_NO_DATA
1252           When a curl trace is enabled (see GIT_TRACE_CURL above), do not
1253           dump data (that is, only dump info lines and headers).
1254
1255       GIT_TRACE2
1256           Enables more detailed trace messages from the "trace2" library.
1257           Output from GIT_TRACE2 is a simple text-based format for human
1258           readability.
1259
1260           If this variable is set to "1", "2" or "true" (comparison is case
1261           insensitive), trace messages will be printed to stderr.
1262
1263           If the variable is set to an integer value greater than 2 and lower
1264           than 10 (strictly) then Git will interpret this value as an open
1265           file descriptor and will try to write the trace messages into this
1266           file descriptor.
1267
1268           Alternatively, if the variable is set to an absolute path (starting
1269           with a / character), Git will interpret this as a file path and
1270           will try to append the trace messages to it. If the path already
1271           exists and is a directory, the trace messages will be written to
1272           files (one per process) in that directory, named according to the
1273           last component of the SID and an optional counter (to avoid
1274           filename collisions).
1275
1276           In addition, if the variable is set to
1277           af_unix:[<socket_type>:]<absolute-pathname>, Git will try to open
1278           the path as a Unix Domain Socket. The socket type can be either
1279           stream or dgram.
1280
1281           Unsetting the variable, or setting it to empty, "0" or "false"
1282           (case insensitive) disables trace messages.
1283
1284           See Trace2 documentation[2] for full details.
1285
1286       GIT_TRACE2_EVENT
1287           This setting writes a JSON-based format that is suited for machine
1288           interpretation. See GIT_TRACE2 for available trace output options
1289           and Trace2 documentation[2] for full details.
1290
1291       GIT_TRACE2_PERF
1292           In addition to the text-based messages available in GIT_TRACE2,
1293           this setting writes a column-based format for understanding nesting
1294           regions. See GIT_TRACE2 for available trace output options and
1295           Trace2 documentation[2] for full details.
1296
1297       GIT_TRACE_REDACT
1298           By default, when tracing is activated, Git redacts the values of
1299           cookies, the "Authorization:" header, the "Proxy-Authorization:"
1300           header and packfile URIs. Set this Boolean environment variable to
1301           false to prevent this redaction.
1302
1303       GIT_LITERAL_PATHSPECS
1304           Setting this Boolean environment variable to true will cause Git to
1305           treat all pathspecs literally, rather than as glob patterns. For
1306           example, running GIT_LITERAL_PATHSPECS=1 git log -- '*.c' will
1307           search for commits that touch the path *.c, not any paths that the
1308           glob *.c matches. You might want this if you are feeding literal
1309           paths to Git (e.g., paths previously given to you by git ls-tree,
1310           --raw diff output, etc).
1311
1312       GIT_GLOB_PATHSPECS
1313           Setting this Boolean environment variable to true will cause Git to
1314           treat all pathspecs as glob patterns (aka "glob" magic).
1315
1316       GIT_NOGLOB_PATHSPECS
1317           Setting this Boolean environment variable to true will cause Git to
1318           treat all pathspecs as literal (aka "literal" magic).
1319
1320       GIT_ICASE_PATHSPECS
1321           Setting this Boolean environment variable to true will cause Git to
1322           treat all pathspecs as case-insensitive.
1323
1324       GIT_REFLOG_ACTION
1325           When a ref is updated, reflog entries are created to keep track of
1326           the reason why the ref was updated (which is typically the name of
1327           the high-level command that updated the ref), in addition to the
1328           old and new values of the ref. A scripted Porcelain command can use
1329           set_reflog_action helper function in git-sh-setup to set its name
1330           to this variable when it is invoked as the top level command by the
1331           end user, to be recorded in the body of the reflog.
1332
1333       GIT_REF_PARANOIA
1334           If this Boolean environment variable is set to false, ignore broken
1335           or badly named refs when iterating over lists of refs. Normally Git
1336           will try to include any such refs, which may cause some operations
1337           to fail. This is usually preferable, as potentially destructive
1338           operations (e.g., git-prune(1)) are better off aborting rather than
1339           ignoring broken refs (and thus considering the history they point
1340           to as not worth saving). The default value is 1 (i.e., be paranoid
1341           about detecting and aborting all operations). You should not
1342           normally need to set this to 0, but it may be useful when trying to
1343           salvage data from a corrupted repository.
1344
1345       GIT_ALLOW_PROTOCOL
1346           If set to a colon-separated list of protocols, behave as if
1347           protocol.allow is set to never, and each of the listed protocols
1348           has protocol.<name>.allow set to always (overriding any existing
1349           configuration). See the description of protocol.allow in git-
1350           config(1) for more details.
1351
1352       GIT_PROTOCOL_FROM_USER
1353           Set this Boolean environment variable to false to prevent protocols
1354           used by fetch/push/clone which are configured to the user state.
1355           This is useful to restrict recursive submodule initialization from
1356           an untrusted repository or for programs which feed
1357           potentially-untrusted URLS to git commands. See git-config(1) for
1358           more details.
1359
1360       GIT_PROTOCOL
1361           For internal use only. Used in handshaking the wire protocol.
1362           Contains a colon : separated list of keys with optional values
1363           key[=value]. Presence of unknown keys and values must be ignored.
1364
1365           Note that servers may need to be configured to allow this variable
1366           to pass over some transports. It will be propagated automatically
1367           when accessing local repositories (i.e., file:// or a filesystem
1368           path), as well as over the git:// protocol. For git-over-http, it
1369           should work automatically in most configurations, but see the
1370           discussion in git-http-backend(1). For git-over-ssh, the ssh server
1371           may need to be configured to allow clients to pass this variable
1372           (e.g., by using AcceptEnv GIT_PROTOCOL with OpenSSH).
1373
1374           This configuration is optional. If the variable is not propagated,
1375           then clients will fall back to the original "v0" protocol (but may
1376           miss out on some performance improvements or features). This
1377           variable currently only affects clones and fetches; it is not yet
1378           used for pushes (but may be in the future).
1379
1380       GIT_OPTIONAL_LOCKS
1381           If this Boolean environment variable is set to false, Git will
1382           complete any requested operation without performing any optional
1383           sub-operations that require taking a lock. For example, this will
1384           prevent git status from refreshing the index as a side effect. This
1385           is useful for processes running in the background which do not want
1386           to cause lock contention with other operations on the repository.
1387           Defaults to 1.
1388
1389       GIT_REDIRECT_STDIN, GIT_REDIRECT_STDOUT, GIT_REDIRECT_STDERR
1390           Windows-only: allow redirecting the standard input/output/error
1391           handles to paths specified by the environment variables. This is
1392           particularly useful in multi-threaded applications where the
1393           canonical way to pass standard handles via CreateProcess() is not
1394           an option because it would require the handles to be marked
1395           inheritable (and consequently every spawned process would inherit
1396           them, possibly blocking regular Git operations). The primary
1397           intended use case is to use named pipes for communication (e.g.
1398           \\.\pipe\my-git-stdin-123).
1399
1400           Two special values are supported: off will simply close the
1401           corresponding standard handle, and if GIT_REDIRECT_STDERR is 2>&1,
1402           standard error will be redirected to the same handle as standard
1403           output.
1404
1405       GIT_PRINT_SHA1_ELLIPSIS (deprecated)
1406           If set to yes, print an ellipsis following an (abbreviated) SHA-1
1407           value. This affects indications of detached HEADs (git-checkout(1))
1408           and the raw diff output (git-diff(1)). Printing an ellipsis in the
1409           cases mentioned is no longer considered adequate and support for it
1410           is likely to be removed in the foreseeable future (along with the
1411           variable).
1412

DISCUSSION

1414       More detail on the following is available from the Git concepts chapter
1415       of the user-manual[3] and gitcore-tutorial(7).
1416
1417       A Git project normally consists of a working directory with a ".git"
1418       subdirectory at the top level. The .git directory contains, among other
1419       things, a compressed object database representing the complete history
1420       of the project, an "index" file which links that history to the current
1421       contents of the working tree, and named pointers into that history such
1422       as tags and branch heads.
1423
1424       The object database contains objects of three main types: blobs, which
1425       hold file data; trees, which point to blobs and other trees to build up
1426       directory hierarchies; and commits, which each reference a single tree
1427       and some number of parent commits.
1428
1429       The commit, equivalent to what other systems call a "changeset" or
1430       "version", represents a step in the project’s history, and each parent
1431       represents an immediately preceding step. Commits with more than one
1432       parent represent merges of independent lines of development.
1433
1434       All objects are named by the SHA-1 hash of their contents, normally
1435       written as a string of 40 hex digits. Such names are globally unique.
1436       The entire history leading up to a commit can be vouched for by signing
1437       just that commit. A fourth object type, the tag, is provided for this
1438       purpose.
1439
1440       When first created, objects are stored in individual files, but for
1441       efficiency may later be compressed together into "pack files".
1442
1443       Named pointers called refs mark interesting points in history. A ref
1444       may contain the SHA-1 name of an object or the name of another ref.
1445       Refs with names beginning ref/head/ contain the SHA-1 name of the most
1446       recent commit (or "head") of a branch under development. SHA-1 names of
1447       tags of interest are stored under ref/tags/. A special ref named HEAD
1448       contains the name of the currently checked-out branch.
1449
1450       The index file is initialized with a list of all paths and, for each
1451       path, a blob object and a set of attributes. The blob object represents
1452       the contents of the file as of the head of the current branch. The
1453       attributes (last modified time, size, etc.) are taken from the
1454       corresponding file in the working tree. Subsequent changes to the
1455       working tree can be found by comparing these attributes. The index may
1456       be updated with new content, and new commits may be created from the
1457       content stored in the index.
1458
1459       The index is also capable of storing multiple entries (called "stages")
1460       for a given pathname. These stages are used to hold the various
1461       unmerged version of a file when a merge is in progress.
1462

FURTHER DOCUMENTATION

1464       See the references in the "description" section to get started using
1465       Git. The following is probably more detail than necessary for a
1466       first-time user.
1467
1468       The Git concepts chapter of the user-manual[3] and gitcore-tutorial(7)
1469       both provide introductions to the underlying Git architecture.
1470
1471       See gitworkflows(7) for an overview of recommended workflows.
1472
1473       See also the howto[4] documents for some useful examples.
1474
1475       The internals are documented in the Git API documentation[5].
1476
1477       Users migrating from CVS may also want to read gitcvs-migration(7).
1478

AUTHORS

1480       Git was started by Linus Torvalds, and is currently maintained by Junio
1481       C Hamano. Numerous contributions have come from the Git mailing list
1482       <git@vger.kernel.org[6]>.
1483       http://www.openhub.net/p/git/contributors/summary gives you a more
1484       complete list of contributors.
1485
1486       If you have a clone of git.git itself, the output of git-shortlog(1)
1487       and git-blame(1) can show you the authors for specific parts of the
1488       project.
1489

REPORTING BUGS

1491       Report bugs to the Git mailing list <git@vger.kernel.org[6]> where the
1492       development and maintenance is primarily done. You do not have to be
1493       subscribed to the list to send a message there. See the list archive at
1494       https://lore.kernel.org/git for previous bug reports and other
1495       discussions.
1496
1497       Issues which are security relevant should be disclosed privately to the
1498       Git Security mailing list <git-security@googlegroups.com[7]>.
1499

SEE ALSO

1501       gittutorial(7), gittutorial-2(7), giteveryday(7), gitcvs-migration(7),
1502       gitglossary(7), gitcore-tutorial(7), gitcli(7), The Git User’s
1503       Manual[1], gitworkflows(7)
1504

GIT

1506       Part of the git(1) suite
1507

NOTES

1509        1. Git User’s Manual
1510           file:///usr/share/doc/git/user-manual.html
1511
1512        2. Trace2 documentation
1513           file:///usr/share/doc/git/technical/api-trace2.html
1514
1515        3. Git concepts chapter of the user-manual
1516           file:///usr/share/doc/git/user-manual.html#git-concepts
1517
1518        4. howto
1519           file:///usr/share/doc/git/howto-index.html
1520
1521        5. Git API documentation
1522           file:///usr/share/doc/git/technical/api-index.html
1523
1524        6. git@vger.kernel.org
1525           mailto:git@vger.kernel.org
1526
1527        7. git-security@googlegroups.com
1528           mailto:git-security@googlegroups.com
1529
1530
1531
1532Git 2.39.1                        2023-01-13                            GIT(1)
Impressum