1GIT(1) Git Manual GIT(1)
2
3
4
6 git - the stupid content tracker
7
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
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
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
204 We divide Git into high level ("porcelain") commands and low level
205 ("plumbing") commands.
206
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
469 • git-revert(1) is about making a new commit that reverts the changes
470 made by other commits.
471
472 • git-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
477 • git-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
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
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
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
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
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
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
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
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
912 Please see gitglossary(7).
913
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
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
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
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
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
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
1506 Part of the git(1) suite
1507
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)