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

NAME

6       git - the stupid content tracker
7

SYNOPSIS

9       git [--version] [--help] [-c <name>=<value>]
10           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
11           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
12           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
13           <command> [<args>]
14
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 Everyday Git[1] for a
22       useful minimum set of commands. The Git User’s Manual[2] has a more
23       in-depth 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       Formatted and hyperlinked version of the latest Git documentation can
31       be viewed at http://git-htmldocs.googlecode.com/git/git.html.
32

OPTIONS

34       --version
35           Prints the Git suite version that the git program came from.
36
37       --help
38           Prints the synopsis and a list of the most commonly used commands.
39           If the option --all or -a is given then all available commands are
40           printed. If a Git command is named this option will bring up the
41           manual page for that command.
42
43           Other options are available to control how the manual page is
44           displayed. See git-help(1) for more information, because git --help
45           ...  is converted internally into git help ....
46
47       -c <name>=<value>
48           Pass a configuration parameter to the command. The value given will
49           override values from configuration files. The <name> is expected in
50           the same format as listed by git config (subkeys separated by
51           dots).
52
53       --exec-path[=<path>]
54           Path to wherever your core Git programs are installed. This can
55           also be controlled by setting the GIT_EXEC_PATH environment
56           variable. If no path is given, git will print the current setting
57           and then exit.
58
59       --html-path
60           Print the path, without trailing slash, where Git’s HTML
61           documentation is installed and exit.
62
63       --man-path
64           Print the manpath (see man(1)) for the man pages for this version
65           of Git and exit.
66
67       --info-path
68           Print the path where the Info files documenting this version of Git
69           are installed and exit.
70
71       -p, --paginate
72           Pipe all output into less (or if set, $PAGER) if standard output is
73           a terminal. This overrides the pager.<cmd> configuration options
74           (see the "Configuration Mechanism" section below).
75
76       --no-pager
77           Do not pipe Git output into a pager.
78
79       --git-dir=<path>
80           Set the path to the repository. This can also be controlled by
81           setting the GIT_DIR environment variable. It can be an absolute
82           path or relative path to current working directory.
83
84       --work-tree=<path>
85           Set the path to the working tree. It can be an absolute path or a
86           path relative to the current working directory. This can also be
87           controlled by setting the GIT_WORK_TREE environment variable and
88           the core.worktree configuration variable (see core.worktree in git-
89           config(1) for a more detailed discussion).
90
91       --namespace=<path>
92           Set the Git namespace. See gitnamespaces(7) for more details.
93           Equivalent to setting the GIT_NAMESPACE environment variable.
94
95       --bare
96           Treat the repository as a bare repository. If GIT_DIR environment
97           is not set, it is set to the current working directory.
98
99       --no-replace-objects
100           Do not use replacement refs to replace Git objects. See git-
101           replace(1) for more information.
102
103       --literal-pathspecs
104           Treat pathspecs literally, rather than as glob patterns. This is
105           equivalent to setting the GIT_LITERAL_PATHSPECS environment
106           variable to 1.
107

GIT COMMANDS

109       We divide Git into high level ("porcelain") commands and low level
110       ("plumbing") commands.
111

HIGH-LEVEL COMMANDS (PORCELAIN)

113       We separate the porcelain commands into the main commands and some
114       ancillary user utilities.
115
116   Main porcelain commands
117       git-add(1)
118           Add file contents to the index.
119
120       git-am(1)
121           Apply a series of patches from a mailbox.
122
123       git-archive(1)
124           Create an archive of files from a named tree.
125
126       git-bisect(1)
127           Find by binary search the change that introduced a bug.
128
129       git-branch(1)
130           List, create, or delete branches.
131
132       git-bundle(1)
133           Move objects and refs by archive.
134
135       git-checkout(1)
136           Checkout a branch or paths to the working tree.
137
138       git-cherry-pick(1)
139           Apply the changes introduced by some existing commits.
140
141       git-citool(1)
142           Graphical alternative to git-commit.
143
144       git-clean(1)
145           Remove untracked files from the working tree.
146
147       git-clone(1)
148           Clone a repository into a new directory.
149
150       git-commit(1)
151           Record changes to the repository.
152
153       git-describe(1)
154           Show the most recent tag that is reachable from a commit.
155
156       git-diff(1)
157           Show changes between commits, commit and working tree, etc.
158
159       git-fetch(1)
160           Download objects and refs from another repository.
161
162       git-format-patch(1)
163           Prepare patches for e-mail submission.
164
165       git-gc(1)
166           Cleanup unnecessary files and optimize the local repository.
167
168       git-grep(1)
169           Print lines matching a pattern.
170
171       git-gui(1)
172           A portable graphical interface to Git.
173
174       git-init(1)
175           Create an empty Git repository or reinitialize an existing one.
176
177       git-log(1)
178           Show commit logs.
179
180       git-merge(1)
181           Join two or more development histories together.
182
183       git-mv(1)
184           Move or rename a file, a directory, or a symlink.
185
186       git-notes(1)
187           Add or inspect object notes.
188
189       git-pull(1)
190           Fetch from and merge with another repository or a local branch.
191
192       git-push(1)
193           Update remote refs along with associated objects.
194
195       git-rebase(1)
196           Forward-port local commits to the updated upstream head.
197
198       git-reset(1)
199           Reset current HEAD to the specified state.
200
201       git-revert(1)
202           Revert some existing commits.
203
204       git-rm(1)
205           Remove files from the working tree and from the index.
206
207       git-shortlog(1)
208           Summarize git log output.
209
210       git-show(1)
211           Show various types of objects.
212
213       git-stash(1)
214           Stash the changes in a dirty working directory away.
215
216       git-status(1)
217           Show the working tree status.
218
219       git-submodule(1)
220           Initialize, update or inspect submodules.
221
222       git-tag(1)
223           Create, list, delete or verify a tag object signed with GPG.
224
225       gitk(1)
226           The Git repository browser.
227
228   Ancillary Commands
229       Manipulators:
230
231       git-config(1)
232           Get and set repository or global options.
233
234       git-fast-export(1)
235           Git data exporter.
236
237       git-fast-import(1)
238           Backend for fast Git data importers.
239
240       git-filter-branch(1)
241           Rewrite branches.
242
243       git-lost-found(1)
244           (deprecated) Recover lost refs that luckily have not yet been
245           pruned.
246
247       git-mergetool(1)
248           Run merge conflict resolution tools to resolve merge conflicts.
249
250       git-pack-refs(1)
251           Pack heads and tags for efficient repository access.
252
253       git-prune(1)
254           Prune all unreachable objects from the object database.
255
256       git-reflog(1)
257           Manage reflog information.
258
259       git-relink(1)
260           Hardlink common objects in local repositories.
261
262       git-remote(1)
263           manage set of tracked repositories.
264
265       git-repack(1)
266           Pack unpacked objects in a repository.
267
268       git-replace(1)
269           Create, list, delete refs to replace objects.
270
271       git-repo-config(1)
272           (deprecated) Get and set repository or global options.
273
274       Interrogators:
275
276       git-annotate(1)
277           Annotate file lines with commit information.
278
279       git-blame(1)
280           Show what revision and author last modified each line of a file.
281
282       git-cherry(1)
283           Find commits not merged upstream.
284
285       git-count-objects(1)
286           Count unpacked number of objects and their disk consumption.
287
288       git-difftool(1)
289           Show changes using common diff tools.
290
291       git-fsck(1)
292           Verifies the connectivity and validity of the objects in the
293           database.
294
295       git-get-tar-commit-id(1)
296           Extract commit ID from an archive created using git-archive.
297
298       git-help(1)
299           Display help information about Git.
300
301       git-instaweb(1)
302           Instantly browse your working repository in gitweb.
303
304       git-merge-tree(1)
305           Show three-way merge without touching index.
306
307       git-rerere(1)
308           Reuse recorded resolution of conflicted merges.
309
310       git-rev-parse(1)
311           Pick out and massage parameters.
312
313       git-show-branch(1)
314           Show branches and their commits.
315
316       git-verify-tag(1)
317           Check the GPG signature of tags.
318
319       git-whatchanged(1)
320           Show logs with difference each commit introduces.
321
322       gitweb(1)
323           Git web interface (web frontend to Git repositories).
324
325   Interacting with Others
326       These commands are to interact with foreign SCM and with other people
327       via patch over e-mail.
328
329       git-archimport(1)
330           Import an Arch repository into Git.
331
332       git-cvsexportcommit(1)
333           Export a single commit to a CVS checkout.
334
335       git-cvsimport(1)
336           Salvage your data out of another SCM people love to hate.
337
338       git-cvsserver(1)
339           A CVS server emulator for Git.
340
341       git-imap-send(1)
342           Send a collection of patches from stdin to an IMAP folder.
343
344       git-p4(1)
345           Import from and submit to Perforce repositories.
346
347       git-quiltimport(1)
348           Applies a quilt patchset onto the current branch.
349
350       git-request-pull(1)
351           Generates a summary of pending changes.
352
353       git-send-email(1)
354           Send a collection of patches as emails.
355
356       git-svn(1)
357           Bidirectional operation between a Subversion repository and Git.
358

LOW-LEVEL COMMANDS (PLUMBING)

360       Although Git includes its own porcelain layer, its low-level commands
361       are sufficient to support development of alternative porcelains.
362       Developers of such porcelains might start by reading about git-update-
363       index(1) and git-read-tree(1).
364
365       The interface (input, output, set of options and the semantics) to
366       these low-level commands are meant to be a lot more stable than
367       Porcelain level commands, because these commands are primarily for
368       scripted use. The interface to Porcelain commands on the other hand are
369       subject to change in order to improve the end user experience.
370
371       The following description divides the low-level commands into commands
372       that manipulate objects (in the repository, index, and working tree),
373       commands that interrogate and compare objects, and commands that move
374       objects and references between repositories.
375
376   Manipulation commands
377       git-apply(1)
378           Apply a patch to files and/or to the index.
379
380       git-checkout-index(1)
381           Copy files from the index to the working tree.
382
383       git-commit-tree(1)
384           Create a new commit object.
385
386       git-hash-object(1)
387           Compute object ID and optionally creates a blob from a file.
388
389       git-index-pack(1)
390           Build pack index file for an existing packed archive.
391
392       git-merge-file(1)
393           Run a three-way file merge.
394
395       git-merge-index(1)
396           Run a merge for files needing merging.
397
398       git-mktag(1)
399           Creates a tag object.
400
401       git-mktree(1)
402           Build a tree-object from ls-tree formatted text.
403
404       git-pack-objects(1)
405           Create a packed archive of objects.
406
407       git-prune-packed(1)
408           Remove extra objects that are already in pack files.
409
410       git-read-tree(1)
411           Reads tree information into the index.
412
413       git-symbolic-ref(1)
414           Read, modify and delete symbolic refs.
415
416       git-unpack-objects(1)
417           Unpack objects from a packed archive.
418
419       git-update-index(1)
420           Register file contents in the working tree to the index.
421
422       git-update-ref(1)
423           Update the object name stored in a ref safely.
424
425       git-write-tree(1)
426           Create a tree object from the current index.
427
428   Interrogation commands
429       git-cat-file(1)
430           Provide content or type and size information for repository
431           objects.
432
433       git-diff-files(1)
434           Compares files in the working tree and the index.
435
436       git-diff-index(1)
437           Compares content and mode of blobs between the index and
438           repository.
439
440       git-diff-tree(1)
441           Compares the content and mode of blobs found via two tree objects.
442
443       git-for-each-ref(1)
444           Output information on each ref.
445
446       git-ls-files(1)
447           Show information about files in the index and the working tree.
448
449       git-ls-remote(1)
450           List references in a remote repository.
451
452       git-ls-tree(1)
453           List the contents of a tree object.
454
455       git-merge-base(1)
456           Find as good common ancestors as possible for a merge.
457
458       git-name-rev(1)
459           Find symbolic names for given revs.
460
461       git-pack-redundant(1)
462           Find redundant pack files.
463
464       git-rev-list(1)
465           Lists commit objects in reverse chronological order.
466
467       git-show-index(1)
468           Show packed archive index.
469
470       git-show-ref(1)
471           List references in a local repository.
472
473       git-tar-tree(1)
474           (deprecated) Create a tar archive of the files in the named tree
475           object.
476
477       git-unpack-file(1)
478           Creates a temporary file with a blob’s contents.
479
480       git-var(1)
481           Show a Git logical variable.
482
483       git-verify-pack(1)
484           Validate packed Git archive files.
485
486       In general, the interrogate commands do not touch the files in the
487       working tree.
488
489   Synching repositories
490       git-daemon(1)
491           A really simple server for Git repositories.
492
493       git-fetch-pack(1)
494           Receive missing objects from another repository.
495
496       git-http-backend(1)
497           Server side implementation of Git over HTTP.
498
499       git-send-pack(1)
500           Push objects over Git protocol to another repository.
501
502       git-update-server-info(1)
503           Update auxiliary info file to help dumb servers.
504
505       The following are helper commands used by the above; end users
506       typically do not use them directly.
507
508       git-http-fetch(1)
509           Download from a remote Git repository via HTTP.
510
511       git-http-push(1)
512           Push objects over HTTP/DAV to another repository.
513
514       git-parse-remote(1)
515           Routines to help parsing remote repository access parameters.
516
517       git-receive-pack(1)
518           Receive what is pushed into the repository.
519
520       git-shell(1)
521           Restricted login shell for Git-only SSH access.
522
523       git-upload-archive(1)
524           Send archive back to git-archive.
525
526       git-upload-pack(1)
527           Send objects packed back to git-fetch-pack.
528
529   Internal helper commands
530       These are internal helper commands used by other commands; end users
531       typically do not use them directly.
532
533       git-check-attr(1)
534           Display gitattributes information.
535
536       git-check-ignore(1)
537           Debug gitignore / exclude files.
538
539       git-check-ref-format(1)
540           Ensures that a reference name is well formed.
541
542       git-column(1)
543           Display data in columns.
544
545       git-credential(1)
546           Retrieve and store user credentials.
547
548       git-credential-cache(1)
549           Helper to temporarily store passwords in memory.
550
551       git-credential-store(1)
552           Helper to store credentials on disk.
553
554       git-fmt-merge-msg(1)
555           Produce a merge commit message.
556
557       git-mailinfo(1)
558           Extracts patch and authorship from a single e-mail message.
559
560       git-mailsplit(1)
561           Simple UNIX mbox splitter program.
562
563       git-merge-one-file(1)
564           The standard helper program to use with git-merge-index.
565
566       git-patch-id(1)
567           Compute unique ID for a patch.
568
569       git-peek-remote(1)
570           (deprecated) List the references in a remote repository.
571
572       git-sh-i18n(1)
573           Git’s i18n setup code for shell scripts.
574
575       git-sh-setup(1)
576           Common Git shell script setup code.
577
578       git-stripspace(1)
579           Remove unnecessary whitespace.
580

CONFIGURATION MECHANISM

582       Git uses a simple text format to store customizations that are per
583       repository and are per user. Such a configuration file may look like
584       this:
585
586           #
587           # A '#' or ';' character indicates a comment.
588           #
589
590           ; core variables
591           [core]
592                   ; Don't trust file modes
593                   filemode = false
594
595           ; user identity
596           [user]
597                   name = "Junio C Hamano"
598                   email = "gitster@pobox.com"
599
600
601       Various commands read from the configuration file and adjust their
602       operation accordingly. See git-config(1) for a list and more details
603       about the configuration mechanism.
604

IDENTIFIER TERMINOLOGY

606       <object>
607           Indicates the object name for any type of object.
608
609       <blob>
610           Indicates a blob object name.
611
612       <tree>
613           Indicates a tree object name.
614
615       <commit>
616           Indicates a commit object name.
617
618       <tree-ish>
619           Indicates a tree, commit or tag object name. A command that takes a
620           <tree-ish> argument ultimately wants to operate on a <tree> object
621           but automatically dereferences <commit> and <tag> objects that
622           point at a <tree>.
623
624       <commit-ish>
625           Indicates a commit or tag object name. A command that takes a
626           <commit-ish> argument ultimately wants to operate on a <commit>
627           object but automatically dereferences <tag> objects that point at a
628           <commit>.
629
630       <type>
631           Indicates that an object type is required. Currently one of: blob,
632           tree, commit, or tag.
633
634       <file>
635           Indicates a filename - almost always relative to the root of the
636           tree structure GIT_INDEX_FILE describes.
637

SYMBOLIC IDENTIFIERS

639       Any Git command accepting any <object> can also use the following
640       symbolic notation:
641
642       HEAD
643           indicates the head of the current branch.
644
645       <tag>
646           a valid tag name (i.e. a refs/tags/<tag> reference).
647
648       <head>
649           a valid head name (i.e. a refs/heads/<head> reference).
650
651       For a more complete list of ways to spell object names, see "SPECIFYING
652       REVISIONS" section in gitrevisions(7).
653

FILE/DIRECTORY STRUCTURE

655       Please see the gitrepository-layout(5) document.
656
657       Read githooks(5) for more details about each hook.
658
659       Higher level SCMs may provide and manage additional information in the
660       $GIT_DIR.
661

TERMINOLOGY

663       Please see gitglossary(7).
664

ENVIRONMENT VARIABLES

666       Various Git commands use the following environment variables:
667
668   The Git Repository
669       These environment variables apply to all core Git commands. Nb: it is
670       worth noting that they may be used/overridden by SCMS sitting above Git
671       so take care if using Cogito etc.
672
673       GIT_INDEX_FILE
674           This environment allows the specification of an alternate index
675           file. If not specified, the default of $GIT_DIR/index is used.
676
677       GIT_OBJECT_DIRECTORY
678           If the object storage directory is specified via this environment
679           variable then the sha1 directories are created underneath -
680           otherwise the default $GIT_DIR/objects directory is used.
681
682       GIT_ALTERNATE_OBJECT_DIRECTORIES
683           Due to the immutable nature of Git objects, old objects can be
684           archived into shared, read-only directories. This variable
685           specifies a ":" separated (on Windows ";" separated) list of Git
686           object directories which can be used to search for Git objects. New
687           objects will not be written to these directories.
688
689       GIT_DIR
690           If the GIT_DIR environment variable is set then it specifies a path
691           to use instead of the default .git for the base of the repository.
692           The --git-dir command-line option also sets this value.
693
694       GIT_WORK_TREE
695           Set the path to the working tree. The value will not be used in
696           combination with repositories found automatically in a .git
697           directory (i.e. $GIT_DIR is not set). This can also be controlled
698           by the --work-tree command line option and the core.worktree
699           configuration variable.
700
701       GIT_NAMESPACE
702           Set the Git namespace; see gitnamespaces(7) for details. The
703           --namespace command-line option also sets this value.
704
705       GIT_CEILING_DIRECTORIES
706           This should be a colon-separated list of absolute paths. If set, it
707           is a list of directories that Git should not chdir up into while
708           looking for a repository directory (useful for excluding
709           slow-loading network directories). It will not exclude the current
710           working directory or a GIT_DIR set on the command line or in the
711           environment. Normally, Git has to read the entries in this list and
712           resolve any symlink that might be present in order to compare them
713           with the current directory. However, if even this access is slow,
714           you can add an empty entry to the list to tell Git that the
715           subsequent entries are not symlinks and needn’t be resolved; e.g.,
716           GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink.
717
718       GIT_DISCOVERY_ACROSS_FILESYSTEM
719           When run in a directory that does not have ".git" repository
720           directory, Git tries to find such a directory in the parent
721           directories to find the top of the working tree, but by default it
722           does not cross filesystem boundaries. This environment variable can
723           be set to true to tell Git not to stop at filesystem boundaries.
724           Like GIT_CEILING_DIRECTORIES, this will not affect an explicit
725           repository directory set via GIT_DIR or on the command line.
726
727   Git Commits
728       GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_AUTHOR_DATE, GIT_COMMITTER_NAME,
729       GIT_COMMITTER_EMAIL, GIT_COMMITTER_DATE, EMAIL
730           see git-commit-tree(1)
731
732   Git Diffs
733       GIT_DIFF_OPTS
734           Only valid setting is "--unified=??" or "-u??" to set the number of
735           context lines shown when a unified diff is created. This takes
736           precedence over any "-U" or "--unified" option value passed on the
737           Git diff command line.
738
739       GIT_EXTERNAL_DIFF
740           When the environment variable GIT_EXTERNAL_DIFF is set, the program
741           named by it is called, instead of the diff invocation described
742           above. For a path that is added, removed, or modified,
743           GIT_EXTERNAL_DIFF is called with 7 parameters:
744
745               path old-file old-hex old-mode new-file new-hex new-mode
746
747           where:
748
749       <old|new>-file
750           are files GIT_EXTERNAL_DIFF can use to read the contents of
751           <old|new>,
752
753       <old|new>-hex
754           are the 40-hexdigit SHA-1 hashes,
755
756       <old|new>-mode
757           are the octal representation of the file modes.
758
759           The file parameters can point at the user’s working file (e.g.
760           new-file in "git-diff-files"), /dev/null (e.g.  old-file when a new
761           file is added), or a temporary file (e.g.  old-file in the index).
762           GIT_EXTERNAL_DIFF should not worry about unlinking the temporary
763           file --- it is removed when GIT_EXTERNAL_DIFF exits.
764
765           For a path that is unmerged, GIT_EXTERNAL_DIFF is called with 1
766           parameter, <path>.
767
768   other
769       GIT_MERGE_VERBOSITY
770           A number controlling the amount of output shown by the recursive
771           merge strategy. Overrides merge.verbosity. See git-merge(1)
772
773       GIT_PAGER
774           This environment variable overrides $PAGER. If it is set to an
775           empty string or to the value "cat", Git will not launch a pager.
776           See also the core.pager option in git-config(1).
777
778       GIT_EDITOR
779           This environment variable overrides $EDITOR and $VISUAL. It is used
780           by several Git commands when, on interactive mode, an editor is to
781           be launched. See also git-var(1) and the core.editor option in git-
782           config(1).
783
784       GIT_SSH
785           If this environment variable is set then git fetch and git push
786           will use this command instead of ssh when they need to connect to a
787           remote system. The $GIT_SSH command will be given exactly two or
788           four arguments: the username@host (or just host) from the URL and
789           the shell command to execute on that remote system, optionally
790           preceded by -p (literally) and the port from the URL when it
791           specifies something other than the default SSH port.
792
793           To pass options to the program that you want to list in GIT_SSH you
794           will need to wrap the program and options into a shell script, then
795           set GIT_SSH to refer to the shell script.
796
797           Usually it is easier to configure any desired options through your
798           personal .ssh/config file. Please consult your ssh documentation
799           for further details.
800
801       GIT_ASKPASS
802           If this environment variable is set, then Git commands which need
803           to acquire passwords or passphrases (e.g. for HTTP or IMAP
804           authentication) will call this program with a suitable prompt as
805           command line argument and read the password from its STDOUT. See
806           also the core.askpass option in git-config(1).
807
808       GIT_CONFIG_NOSYSTEM
809           Whether to skip reading settings from the system-wide
810           $(prefix)/etc/gitconfig file. This environment variable can be used
811           along with $HOME and $XDG_CONFIG_HOME to create a predictable
812           environment for a picky script, or you can set it temporarily to
813           avoid using a buggy /etc/gitconfig file while waiting for someone
814           with sufficient permissions to fix it.
815
816       GIT_FLUSH
817           If this environment variable is set to "1", then commands such as
818           git blame (in incremental mode), git rev-list, git log, and git
819           whatchanged will force a flush of the output stream after each
820           commit-oriented record have been flushed. If this variable is set
821           to "0", the output of these commands will be done using completely
822           buffered I/O. If this environment variable is not set, Git will
823           choose buffered or record-oriented flushing based on whether stdout
824           appears to be redirected to a file or not.
825
826       GIT_TRACE
827           If this variable is set to "1", "2" or "true" (comparison is case
828           insensitive), Git will print trace: messages on stderr telling
829           about alias expansion, built-in command execution and external
830           command execution. If this variable is set to an integer value
831           greater than 1 and lower than 10 (strictly) then Git will interpret
832           this value as an open file descriptor and will try to write the
833           trace messages into this file descriptor. Alternatively, if this
834           variable is set to an absolute path (starting with a / character),
835           Git will interpret this as a file path and will try to write the
836           trace messages into it.
837
838       GIT_LITERAL_PATHSPECS
839           Setting this variable to 1 will cause Git to treat all pathspecs
840           literally, rather than as glob patterns. For example, running
841           GIT_LITERAL_PATHSPECS=1 git log -- '*.c' will search for commits
842           that touch the path *.c, not any paths that the glob *.c matches.
843           You might want this if you are feeding literal paths to Git (e.g.,
844           paths previously given to you by git ls-tree, --raw diff output,
845           etc).
846
847       GIT_ALLOW_PROTOCOL
848           If set, provide a colon-separated list of protocols which are
849           allowed to be used with fetch/push/clone. This is useful to
850           restrict recursive submodule initialization from an untrusted
851           repository. Any protocol not mentioned will be disallowed (i.e.,
852           this is a whitelist, not a blacklist). If the variable is not set
853           at all, all protocols are enabled. The protocol names currently
854           used by git are:
855
856           ·   file: any local file-based path (including file:// URLs, or
857               local paths)
858
859           ·   git: the anonymous git protocol over a direct TCP connection
860               (or proxy, if configured)
861
862           ·   ssh: git over ssh (including host:path syntax, git+ssh://,
863               etc).
864
865           ·   rsync: git over rsync
866
867           ·   http: git over http, both "smart http" and "dumb http". Note
868               that this does not include https; if you want both, you should
869               specify both as http:https.
870
871           ·   any external helpers are named by their protocol (e.g., use hg
872               to allow the git-remote-hg helper)
873
874               Note that this controls only git’s internal protocol selection.
875               If libcurl is used (e.g., by the http transport), it may
876               redirect to other protocols. There is not currently any way to
877               restrict this.
878

DISCUSSION

880       More detail on the following is available from the Git concepts chapter
881       of the user-manual[3] and gitcore-tutorial(7).
882
883       A Git project normally consists of a working directory with a ".git"
884       subdirectory at the top level. The .git directory contains, among other
885       things, a compressed object database representing the complete history
886       of the project, an "index" file which links that history to the current
887       contents of the working tree, and named pointers into that history such
888       as tags and branch heads.
889
890       The object database contains objects of three main types: blobs, which
891       hold file data; trees, which point to blobs and other trees to build up
892       directory hierarchies; and commits, which each reference a single tree
893       and some number of parent commits.
894
895       The commit, equivalent to what other systems call a "changeset" or
896       "version", represents a step in the project’s history, and each parent
897       represents an immediately preceding step. Commits with more than one
898       parent represent merges of independent lines of development.
899
900       All objects are named by the SHA-1 hash of their contents, normally
901       written as a string of 40 hex digits. Such names are globally unique.
902       The entire history leading up to a commit can be vouched for by signing
903       just that commit. A fourth object type, the tag, is provided for this
904       purpose.
905
906       When first created, objects are stored in individual files, but for
907       efficiency may later be compressed together into "pack files".
908
909       Named pointers called refs mark interesting points in history. A ref
910       may contain the SHA-1 name of an object or the name of another ref.
911       Refs with names beginning ref/head/ contain the SHA-1 name of the most
912       recent commit (or "head") of a branch under development. SHA-1 names of
913       tags of interest are stored under ref/tags/. A special ref named HEAD
914       contains the name of the currently checked-out branch.
915
916       The index file is initialized with a list of all paths and, for each
917       path, a blob object and a set of attributes. The blob object represents
918       the contents of the file as of the head of the current branch. The
919       attributes (last modified time, size, etc.) are taken from the
920       corresponding file in the working tree. Subsequent changes to the
921       working tree can be found by comparing these attributes. The index may
922       be updated with new content, and new commits may be created from the
923       content stored in the index.
924
925       The index is also capable of storing multiple entries (called "stages")
926       for a given pathname. These stages are used to hold the various
927       unmerged version of a file when a merge is in progress.
928

FURTHER DOCUMENTATION

930       See the references in the "description" section to get started using
931       Git. The following is probably more detail than necessary for a
932       first-time user.
933
934       The Git concepts chapter of the user-manual[3] and gitcore-tutorial(7)
935       both provide introductions to the underlying Git architecture.
936
937       See gitworkflows(7) for an overview of recommended workflows.
938
939       See also the howto[4] documents for some useful examples.
940
941       The internals are documented in the Git API documentation[5].
942
943       Users migrating from CVS may also want to read gitcvs-migration(7).
944

AUTHORS

946       Git was started by Linus Torvalds, and is currently maintained by Junio
947       C Hamano. Numerous contributions have come from the Git mailing list
948       <git@vger.kernel.org[6]>.
949       http://www.ohloh.net/p/git/contributors/summary gives you a more
950       complete list of contributors.
951
952       If you have a clone of git.git itself, the output of git-shortlog(1)
953       and git-blame(1) can show you the authors for specific parts of the
954       project.
955

REPORTING BUGS

957       Report bugs to the Git mailing list <git@vger.kernel.org[6]> where the
958       development and maintenance is primarily done. You do not have to be
959       subscribed to the list to send a message there.
960

SEE ALSO

962       gittutorial(7), gittutorial-2(7), Everyday Git[1], gitcvs-migration(7),
963       gitglossary(7), gitcore-tutorial(7), gitcli(7), The Git User’s
964       Manual[2], gitworkflows(7)
965

GIT

967       Part of the git(1) suite
968

NOTES

970        1. Everyday Git
971           file:///usr/share/doc/git-1.8.3.1/everyday.html
972
973        2. Git User’s Manual
974           file:///usr/share/doc/git-1.8.3.1/user-manual.html
975
976        3. Git concepts chapter of the user-manual
977           file:///usr/share/doc/git-1.8.3.1/user-manual.html#git-concepts
978
979        4. howto
980           file:///usr/share/doc/git-1.8.3.1/howto-index.html
981
982        5. Git API documentation
983           file:///usr/share/doc/git-1.8.3.1/technical/api-index.html
984
985        6. git@vger.kernel.org
986           mailto:git@vger.kernel.org
987
988
989
990Git 1.8.3.1                       11/19/2018                            GIT(1)
Impressum