1GIT(1) Git Manual GIT(1)
2
3
4
6 git - the stupid content tracker
7
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
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
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
109 We divide Git into high level ("porcelain") commands and low level
110 ("plumbing") commands.
111
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
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
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
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
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
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
663 Please see gitglossary(7).
664
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
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
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
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
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
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
967 Part of the git(1) suite
968
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)