blob: cf67110a91459ab938d2af70ef62a1aa38d1021b [file] [log] [blame]
Junio C Hamanof7c042d2008-06-06 22:50:531git(1)
Junio C Hamano1a4e8412005-12-27 08:17:232======
3
4NAME
5----
6git - the stupid content tracker
7
8
9SYNOPSIS
10--------
Junio C Hamano6b2cee12006-08-26 08:43:3111[verse]
Junio C Hamanocae86272007-08-21 02:20:4912'git' [--version] [--exec-path[=GIT_EXEC_PATH]]
13 [-p|--paginate|--no-pager]
Junio C Hamanod526ba92007-07-02 00:17:4214 [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
15 [--help] COMMAND [ARGS]
Junio C Hamano1a4e8412005-12-27 08:17:2316
17DESCRIPTION
18-----------
Junio C Hamanoe27fb932006-04-03 05:34:1019Git is a fast, scalable, distributed revision control system with an
20unusually rich command set that provides both high-level operations
21and full access to internals.
22
Junio C Hamanodfccbb02008-05-26 01:16:1423See this linkgit:gittutorial[7][tutorial] to get started, then see
Junio C Hamanoe27fb932006-04-03 05:34:1024link:everyday.html[Everyday Git] for a useful minimum set of commands, and
25"man git-commandname" for documentation of each command. CVS users may
Junio C Hamanodfccbb02008-05-26 01:16:1426also want to read linkgit:gitcvs-migration[7][CVS migration]. See
Junio C Hamano3d30fd52007-05-08 00:32:5327link:user-manual.html[Git User's Manual] for a more in-depth
28introduction.
Junio C Hamano1a4e8412005-12-27 08:17:2329
Junio C Hamano33db4372006-06-07 19:51:4530The COMMAND is either a name of a Git command (see below) or an alias
Junio C Hamano35738e82008-01-07 07:55:4631as defined in the configuration file (see linkgit:git-config[1]).
Junio C Hamano33db4372006-06-07 19:51:4532
Junio C Hamanob63afff2007-05-01 03:05:5533Formatted and hyperlinked version of the latest git
34documentation can be viewed at
35`http://www.kernel.org/pub/software/scm/git/docs/`.
36
Junio C Hamano9d52e572007-02-13 23:48:2037ifdef::stalenotes[]
38[NOTE]
39============
Junio C Hamano9d52e572007-02-13 23:48:2040
Junio C Hamanoa9b8d242007-05-19 04:51:5541You are reading the documentation for the latest (possibly
42unreleased) version of git, that is available from 'master'
43branch of the `git.git` repository.
44Documentation for older releases are available here:
Junio C Hamano2fc92602007-03-29 01:09:4645
Junio C Hamano0d0679d2008-04-08 06:15:4646* link:v1.5.5/git.html[documentation for release 1.5.5]
47
48* release notes for
Junio C Hamanoe2b205c2008-06-08 01:43:4449 link:RelNotes-1.5.5.4.txt[1.5.5.4],
Junio C Hamano99b28f22008-05-28 08:07:2650 link:RelNotes-1.5.5.3.txt[1.5.5.3],
Junio C Hamanob7a77fa2008-05-26 07:20:0151 link:RelNotes-1.5.5.2.txt[1.5.5.2],
Junio C Hamanoe3ddb5b2008-04-21 00:48:0752 link:RelNotes-1.5.5.1.txt[1.5.5.1],
Junio C Hamano0d0679d2008-04-08 06:15:4653 link:RelNotes-1.5.5.txt[1.5.5].
54
Junio C Hamanoe2b205c2008-06-08 01:43:4455* link:v1.5.5.4/git.html[documentation for release 1.5.5.4]
Junio C Hamanoe3ddb5b2008-04-21 00:48:0756
Junio C Hamano56033be2008-03-28 06:12:5357* link:v1.5.4.5/git.html[documentation for release 1.5.4.5]
Junio C Hamano7b9b4262008-02-02 06:48:3958
59* release notes for
Junio C Hamano56033be2008-03-28 06:12:5360 link:RelNotes-1.5.4.5.txt[1.5.4.5],
Junio C Hamanobb343172008-03-09 10:39:0961 link:RelNotes-1.5.4.4.txt[1.5.4.4],
Junio C Hamanocb174dd2008-02-23 21:03:5462 link:RelNotes-1.5.4.3.txt[1.5.4.3],
Junio C Hamanoe670d0d2008-02-17 20:14:5963 link:RelNotes-1.5.4.2.txt[1.5.4.2],
Junio C Hamanoefe3c632008-02-14 00:51:3164 link:RelNotes-1.5.4.1.txt[1.5.4.1],
Junio C Hamano7b9b4262008-02-02 06:48:3965 link:RelNotes-1.5.4.txt[1.5.4].
66
Junio C Hamano4e272312008-01-08 09:13:2167* link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
Junio C Hamanoa75069c2007-09-04 01:19:2468
69* release notes for
Junio C Hamano4e272312008-01-08 09:13:2170 link:RelNotes-1.5.3.8.txt[1.5.3.8],
Junio C Hamano976c0c42007-12-01 21:57:1471 link:RelNotes-1.5.3.7.txt[1.5.3.7],
Junio C Hamanoe1258662007-11-19 05:03:1972 link:RelNotes-1.5.3.6.txt[1.5.3.6],
Junio C Hamano1c708832007-11-02 02:47:5073 link:RelNotes-1.5.3.5.txt[1.5.3.5],
Junio C Hamanoea719cf2007-10-04 13:06:3574 link:RelNotes-1.5.3.4.txt[1.5.3.4],
Junio C Hamano58992c92007-10-01 16:23:1875 link:RelNotes-1.5.3.3.txt[1.5.3.3],
Junio C Hamano199cdf12007-09-19 18:30:4776 link:RelNotes-1.5.3.2.txt[1.5.3.2],
Junio C Hamano61210dd2007-10-24 11:52:1377 link:RelNotes-1.5.3.1.txt[1.5.3.1],
78 link:RelNotes-1.5.3.txt[1.5.3].
Junio C Hamano75485c82007-05-19 04:20:3379
Junio C Hamanoed7f4f62007-05-20 09:09:0980* release notes for
Junio C Hamano3b178be2007-08-16 04:59:2781 link:RelNotes-1.5.2.5.txt[1.5.2.5],
Junio C Hamano235d53f2007-07-13 00:25:1582 link:RelNotes-1.5.2.4.txt[1.5.2.4],
Junio C Hamano1d90cb02007-07-03 07:05:3183 link:RelNotes-1.5.2.3.txt[1.5.2.3],
Junio C Hamano29b1b922007-06-16 16:30:2684 link:RelNotes-1.5.2.2.txt[1.5.2.2],
85 link:RelNotes-1.5.2.1.txt[1.5.2.1],
Junio C Hamanoed7f4f62007-05-20 09:09:0986 link:RelNotes-1.5.2.txt[1.5.2].
87
88* link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
89
90* release notes for
91 link:RelNotes-1.5.1.6.txt[1.5.1.6],
92 link:RelNotes-1.5.1.5.txt[1.5.1.5],
Junio C Hamanoa9b8d242007-05-19 04:51:5593 link:RelNotes-1.5.1.4.txt[1.5.1.4],
94 link:RelNotes-1.5.1.3.txt[1.5.1.3],
95 link:RelNotes-1.5.1.2.txt[1.5.1.2],
96 link:RelNotes-1.5.1.1.txt[1.5.1.1],
97 link:RelNotes-1.5.1.txt[1.5.1].
Junio C Hamano91d44c52007-05-09 07:16:0798
Junio C Hamanoa9b8d242007-05-19 04:51:5599* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
Junio C Hamano91d44c52007-05-09 07:16:07100
Junio C Hamanoed7f4f62007-05-20 09:09:09101* release notes for
102 link:RelNotes-1.5.0.7.txt[1.5.0.7],
Junio C Hamanoa9b8d242007-05-19 04:51:55103 link:RelNotes-1.5.0.6.txt[1.5.0.6],
104 link:RelNotes-1.5.0.5.txt[1.5.0.5],
105 link:RelNotes-1.5.0.3.txt[1.5.0.3],
106 link:RelNotes-1.5.0.2.txt[1.5.0.2],
107 link:RelNotes-1.5.0.1.txt[1.5.0.1],
108 link:RelNotes-1.5.0.txt[1.5.0].
Junio C Hamanoe90436a2007-04-22 07:22:13109
Junio C Hamanoa9b8d242007-05-19 04:51:55110* documentation for release link:v1.4.4.4/git.html[1.4.4.4],
111 link:v1.3.3/git.html[1.3.3],
112 link:v1.2.6/git.html[1.2.6],
113 link:v1.0.13/git.html[1.0.13].
Junio C Hamano9d52e572007-02-13 23:48:20114
115============
116
117endif::stalenotes[]
118
Junio C Hamano1a4e8412005-12-27 08:17:23119OPTIONS
120-------
121--version::
Junio C Hamano01078922006-03-10 00:31:47122Prints the git suite version that the 'git' program came from.
Junio C Hamano1a4e8412005-12-27 08:17:23123
124--help::
Junio C Hamano01078922006-03-10 00:31:47125Prints the synopsis and a list of the most commonly used
Junio C Hamano58256872007-12-04 08:31:13126commands. If the option '--all' or '-a' is given then all
127available commands are printed. If a git command is named this
128option will bring up the manual page for that command.
Junio C Hamano0c0da5f2007-12-13 02:45:30129+
130Other options are available to control how the manual page is
Junio C Hamano35738e82008-01-07 07:55:46131displayed. See linkgit:git-help[1] for more information,
Junio C Hamano0c0da5f2007-12-13 02:45:30132because 'git --help ...' is converted internally into 'git
133help ...'.
Junio C Hamano1a4e8412005-12-27 08:17:23134
135--exec-path::
Junio C Hamano01078922006-03-10 00:31:47136Path to wherever your core git programs are installed.
Junio C Hamano1a4e8412005-12-27 08:17:23137This can also be controlled by setting the GIT_EXEC_PATH
138environment variable. If no path is given 'git' will print
139the current setting and then exit.
140
Junio C Hamanof870ef82006-07-29 09:10:13141-p|--paginate::
142Pipe all output into 'less' (or if set, $PAGER).
143
Junio C Hamanocae86272007-08-21 02:20:49144--no-pager::
145Do not pipe git output into a pager.
146
Junio C Hamanof870ef82006-07-29 09:10:13147--git-dir=<path>::
148Set the path to the repository. This can also be controlled by
Junio C Hamano7d575a52008-04-30 08:45:27149setting the GIT_DIR environment variable. It can be an absolute
150path or relative path to current working directory.
Junio C Hamanof870ef82006-07-29 09:10:13151
Junio C Hamanod526ba92007-07-02 00:17:42152--work-tree=<path>::
153Set the path to the working tree. The value will not be
154used in combination with repositories found automatically in
155a .git directory (i.e. $GIT_DIR is not set).
156This can also be controlled by setting the GIT_WORK_TREE
157environment variable and the core.worktree configuration
Junio C Hamano7d575a52008-04-30 08:45:27158variable. It can be an absolute path or relative path to
159the directory specified by --git-dir or GIT_DIR.
160Note: If --git-dir or GIT_DIR are specified but none of
161--work-tree, GIT_WORK_TREE and core.worktree is specified,
162the current working directory is regarded as the top directory
163of your working tree.
Junio C Hamanod526ba92007-07-02 00:17:42164
Junio C Hamanof870ef82006-07-29 09:10:13165--bare::
Junio C Hamanoc435b1c2007-08-28 06:25:35166Treat the repository as a bare repository. If GIT_DIR
167environment is not set, it is set to the current working
168directory.
169
Junio C Hamano1a4e8412005-12-27 08:17:23170
Junio C Hamanoe27fb932006-04-03 05:34:10171FURTHER DOCUMENTATION
172---------------------
Junio C Hamano1a4e8412005-12-27 08:17:23173
Junio C Hamanoe27fb932006-04-03 05:34:10174See the references above to get started using git. The following is
175probably more detail than necessary for a first-time user.
Junio C Hamano1a4e8412005-12-27 08:17:23176
Junio C Hamano597ffcf2007-09-17 17:33:15177The link:user-manual.html#git-concepts[git concepts chapter of the
Junio C Hamano9e1793f2008-06-02 07:31:16178user-manual] and the linkgit:gitcore-tutorial[7][Core tutorial] both provide
Junio C Hamano597ffcf2007-09-17 17:33:15179introductions to the underlying git architecture.
Junio C Hamano1a4e8412005-12-27 08:17:23180
Junio C Hamanoe27fb932006-04-03 05:34:10181See also the link:howto-index.html[howto] documents for some useful
182examples.
Junio C Hamano1a4e8412005-12-27 08:17:23183
Junio C Hamano3dac5042007-12-15 08:40:54184The internals are documented link:technical/api-index.html[here].
185
Junio C Hamanoe27fb932006-04-03 05:34:10186GIT COMMANDS
187------------
Junio C Hamano1a4e8412005-12-27 08:17:23188
Junio C Hamanoe27fb932006-04-03 05:34:10189We divide git into high level ("porcelain") commands and low level
190("plumbing") commands.
Junio C Hamano1a4e8412005-12-27 08:17:23191
Junio C Hamanob19b4f02006-10-29 20:47:22192High-level commands (porcelain)
193-------------------------------
194
195We separate the porcelain commands into the main commands and some
196ancillary user utilities.
197
198Main porcelain commands
199~~~~~~~~~~~~~~~~~~~~~~~
200
Junio C Hamano7c73c662007-01-19 00:37:50201include::cmds-mainporcelain.txt[]
Junio C Hamanob19b4f02006-10-29 20:47:22202
203Ancillary Commands
204~~~~~~~~~~~~~~~~~~
205Manipulators:
206
Junio C Hamano7c73c662007-01-19 00:37:50207include::cmds-ancillarymanipulators.txt[]
Junio C Hamanob19b4f02006-10-29 20:47:22208
209Interrogators:
210
Junio C Hamano7c73c662007-01-19 00:37:50211include::cmds-ancillaryinterrogators.txt[]
Junio C Hamanob19b4f02006-10-29 20:47:22212
Junio C Hamano4ad294b2007-01-20 02:22:50213
214Interacting with Others
215~~~~~~~~~~~~~~~~~~~~~~~
216
217These commands are to interact with foreign SCM and with other
218people via patch over e-mail.
219
220include::cmds-foreignscminterface.txt[]
221
222
Junio C Hamanoe27fb932006-04-03 05:34:10223Low-level commands (plumbing)
224-----------------------------
Junio C Hamano1a4e8412005-12-27 08:17:23225
Junio C Hamanoe27fb932006-04-03 05:34:10226Although git includes its
227own porcelain layer, its low-level commands are sufficient to support
228development of alternative porcelains. Developers of such porcelains
Junio C Hamano35738e82008-01-07 07:55:46229might start by reading about linkgit:git-update-index[1] and
230linkgit:git-read-tree[1].
Junio C Hamano1a4e8412005-12-27 08:17:23231
Junio C Hamano4ad294b2007-01-20 02:22:50232The interface (input, output, set of options and the semantics)
233to these low-level commands are meant to be a lot more stable
234than Porcelain level commands, because these commands are
235primarily for scripted use. The interface to Porcelain commands
236on the other hand are subject to change in order to improve the
237end user experience.
238
239The following description divides
240the low-level commands into commands that manipulate objects (in
Junio C Hamanoe27fb932006-04-03 05:34:10241the repository, index, and working tree), commands that interrogate and
242compare objects, and commands that move objects and references between
243repositories.
Junio C Hamano1a4e8412005-12-27 08:17:23244
Junio C Hamano4ad294b2007-01-20 02:22:50245
Junio C Hamano1a4e8412005-12-27 08:17:23246Manipulation commands
247~~~~~~~~~~~~~~~~~~~~~
Junio C Hamano1a4e8412005-12-27 08:17:23248
Junio C Hamano7c73c662007-01-19 00:37:50249include::cmds-plumbingmanipulators.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23250
251
252Interrogation commands
253~~~~~~~~~~~~~~~~~~~~~~
254
Junio C Hamano7c73c662007-01-19 00:37:50255include::cmds-plumbinginterrogators.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23256
257In general, the interrogate commands do not touch the files in
258the working tree.
259
260
261Synching repositories
262~~~~~~~~~~~~~~~~~~~~~
263
Junio C Hamano7c73c662007-01-19 00:37:50264include::cmds-synchingrepositories.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23265
Junio C Hamano4ad294b2007-01-20 02:22:50266The following are helper programs used by the above; end users
267typically do not use them directly.
268
269include::cmds-synchelpers.txt[]
270
271
272Internal helper commands
273~~~~~~~~~~~~~~~~~~~~~~~~
274
275These are internal helper commands used by other commands; end
276users typically do not use them directly.
277
278include::cmds-purehelpers.txt[]
279
Junio C Hamano1a4e8412005-12-27 08:17:23280
Junio C Hamano1a4e8412005-12-27 08:17:23281Configuration Mechanism
282-----------------------
283
284Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
285is used to hold per-repository configuration options. It is a
Junio C Hamano51c2ab02006-07-09 20:38:54286simple text file modeled after `.ini` format familiar to some
Junio C Hamano1a4e8412005-12-27 08:17:23287people. Here is an example:
288
289------------
290#
291# A '#' or ';' character indicates a comment.
292#
293
294; core variables
295[core]
296; Don't trust file modes
297filemode = false
298
299; user identity
300[user]
301name = "Junio C Hamano"
302email = "junkio@twinsun.com"
303
304------------
305
306Various commands read from the configuration file and adjust
307their operation accordingly.
308
309
310Identifier Terminology
311----------------------
312<object>::
313Indicates the object name for any type of object.
314
315<blob>::
316Indicates a blob object name.
317
318<tree>::
319Indicates a tree object name.
320
321<commit>::
322Indicates a commit object name.
323
324<tree-ish>::
325Indicates a tree, commit or tag object name. A
326command that takes a <tree-ish> argument ultimately wants to
327operate on a <tree> object but automatically dereferences
328<commit> and <tag> objects that point at a <tree>.
329
Junio C Hamano60f8aa82007-03-06 09:58:26330<commit-ish>::
331Indicates a commit or tag object name. A
332command that takes a <commit-ish> argument ultimately wants to
333operate on a <commit> object but automatically dereferences
334<tag> objects that point at a <commit>.
335
Junio C Hamano1a4e8412005-12-27 08:17:23336<type>::
337Indicates that an object type is required.
338Currently one of: `blob`, `tree`, `commit`, or `tag`.
339
340<file>::
341Indicates a filename - almost always relative to the
342root of the tree structure `GIT_INDEX_FILE` describes.
343
344Symbolic Identifiers
345--------------------
346Any git command accepting any <object> can also use the following
347symbolic notation:
348
349HEAD::
350indicates the head of the current branch (i.e. the
351contents of `$GIT_DIR/HEAD`).
352
353<tag>::
354a valid tag 'name'
355(i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).
356
357<head>::
358a valid head 'name'
359(i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
360
Junio C Hamanoff4b4312006-10-25 22:55:31361For a more complete list of ways to spell object names, see
Junio C Hamano35738e82008-01-07 07:55:46362"SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1].
Junio C Hamanoff4b4312006-10-25 22:55:31363
Junio C Hamano1a4e8412005-12-27 08:17:23364
365File/Directory Structure
366------------------------
367
Junio C Hamanof7c042d2008-06-06 22:50:53368Please see the linkgit:gitrepository-layout[5][repository layout]
369document.
Junio C Hamano1a4e8412005-12-27 08:17:23370
Junio C Hamano2fbcd212008-05-14 22:26:07371Read linkgit:githooks[5][hooks] for more details about each hook.
Junio C Hamano818f7d62006-03-26 01:49:30372
Junio C Hamano1a4e8412005-12-27 08:17:23373Higher level SCMs may provide and manage additional information in the
374`$GIT_DIR`.
375
376
377Terminology
378-----------
Junio C Hamano9e1793f2008-06-02 07:31:16379Please see the linkgit:gitglossary[7][glossary] document.
Junio C Hamano1a4e8412005-12-27 08:17:23380
381
382Environment Variables
383---------------------
384Various git commands use the following environment variables:
385
386The git Repository
387~~~~~~~~~~~~~~~~~~
388These environment variables apply to 'all' core git commands. Nb: it
389is worth noting that they may be used/overridden by SCMS sitting above
390git so take care if using Cogito etc.
391
392'GIT_INDEX_FILE'::
393This environment allows the specification of an alternate
394index file. If not specified, the default of `$GIT_DIR/index`
395is used.
396
397'GIT_OBJECT_DIRECTORY'::
398If the object storage directory is specified via this
399environment variable then the sha1 directories are created
400underneath - otherwise the default `$GIT_DIR/objects`
401directory is used.
402
403'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
404Due to the immutable nature of git objects, old objects can be
405archived into shared, read-only directories. This variable
406specifies a ":" separated list of git object directories which
407can be used to search for git objects. New objects will not be
408written to these directories.
409
410'GIT_DIR'::
411If the 'GIT_DIR' environment variable is set then it
412specifies a path to use instead of the default `.git`
413for the base of the repository.
414
Junio C Hamanod526ba92007-07-02 00:17:42415'GIT_WORK_TREE'::
416Set the path to the working tree. The value will not be
417used in combination with repositories found automatically in
418a .git directory (i.e. $GIT_DIR is not set).
419This can also be controlled by the '--work-tree' command line
420option and the core.worktree configuration variable.
421
Junio C Hamano1a4e8412005-12-27 08:17:23422git Commits
423~~~~~~~~~~~
424'GIT_AUTHOR_NAME'::
425'GIT_AUTHOR_EMAIL'::
426'GIT_AUTHOR_DATE'::
427'GIT_COMMITTER_NAME'::
428'GIT_COMMITTER_EMAIL'::
Junio C Hamano469d60e2007-04-29 18:30:34429'GIT_COMMITTER_DATE'::
430'EMAIL'::
Junio C Hamano35738e82008-01-07 07:55:46431see linkgit:git-commit-tree[1]
Junio C Hamano1a4e8412005-12-27 08:17:23432
433git Diffs
434~~~~~~~~~
435'GIT_DIFF_OPTS'::
Junio C Hamano1c437122006-11-28 02:22:25436Only valid setting is "--unified=??" or "-u??" to set the
437number of context lines shown when a unified diff is created.
438This takes precedence over any "-U" or "--unified" option
439value passed on the git diff command line.
440
Junio C Hamano1a4e8412005-12-27 08:17:23441'GIT_EXTERNAL_DIFF'::
Junio C Hamano1c437122006-11-28 02:22:25442When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
443program named by it is called, instead of the diff invocation
444described above. For a path that is added, removed, or modified,
445 'GIT_EXTERNAL_DIFF' is called with 7 parameters:
446
447path old-file old-hex old-mode new-file new-hex new-mode
448+
449where:
450
451<old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
452 contents of <old|new>,
453<old|new>-hex:: are the 40-hexdigit SHA1 hashes,
454<old|new>-mode:: are the octal representation of the file modes.
455
456+
457The file parameters can point at the user's working file
458(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
459when a new file is added), or a temporary file (e.g. `old-file` in the
460index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the
461temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
462+
463For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
464parameter, <path>.
Junio C Hamano1a4e8412005-12-27 08:17:23465
Junio C Hamano7ccb9fd2006-07-15 01:38:40466other
467~~~~~
Junio C Hamano1e6e0062007-07-13 05:33:25468'GIT_MERGE_VERBOSITY'::
469A number controlling the amount of output shown by
470the recursive merge strategy. Overrides merge.verbosity.
Junio C Hamano35738e82008-01-07 07:55:46471See linkgit:git-merge[1]
Junio C Hamano1e6e0062007-07-13 05:33:25472
Junio C Hamano85e45fa2006-08-13 07:47:41473'GIT_PAGER'::
Junio C Hamanof6002a92007-07-20 10:28:22474This environment variable overrides `$PAGER`. If it is set
475to an empty string or to the value "cat", git will not launch
476a pager.
Junio C Hamano85e45fa2006-08-13 07:47:41477
Junio C Hamano4cd1c0e2007-08-06 04:39:14478'GIT_SSH'::
Junio C Hamano35738e82008-01-07 07:55:46479If this environment variable is set then linkgit:git-fetch[1]
480and linkgit:git-push[1] will use this command instead
Junio C Hamano4cd1c0e2007-08-06 04:39:14481of `ssh` when they need to connect to a remote system.
482The 'GIT_SSH' command will be given exactly two arguments:
483the 'username@host' (or just 'host') from the URL and the
484shell command to execute on that remote system.
485+
486To pass options to the program that you want to list in GIT_SSH
487you will need to wrap the program and options into a shell script,
488then set GIT_SSH to refer to the shell script.
489+
490Usually it is easier to configure any desired options through your
491personal `.ssh/config` file. Please consult your ssh documentation
492for further details.
493
Junio C Hamano401939f2007-07-01 06:34:30494'GIT_FLUSH'::
495If this environment variable is set to "1", then commands such
496as git-blame (in incremental mode), git-rev-list, git-log,
497git-whatchanged, etc., will force a flush of the output stream
498after each commit-oriented record have been flushed. If this
499variable is set to "0", the output of these commands will be done
500using completely buffered I/O. If this environment variable is
501not set, git will choose buffered or record-oriented flushing
502based on whether stdout appears to be redirected to a file or not.
503
Junio C Hamano7ccb9fd2006-07-15 01:38:40504'GIT_TRACE'::
Junio C Hamanoef4b48b2006-09-04 10:08:34505If this variable is set to "1", "2" or "true" (comparison
506is case insensitive), git will print `trace:` messages on
Junio C Hamano7ccb9fd2006-07-15 01:38:40507stderr telling about alias expansion, built-in command
508execution and external command execution.
Junio C Hamanoef4b48b2006-09-04 10:08:34509If this variable is set to an integer value greater than 1
510and lower than 10 (strictly) then git will interpret this
511value as an open file descriptor and will try to write the
512trace messages into this file descriptor.
513Alternatively, if this variable is set to an absolute path
514(starting with a '/' character), git will interpret this
515as a file path and will try to write the trace messages
516into it.
Junio C Hamano7ccb9fd2006-07-15 01:38:40517
Junio C Hamano1a4e8412005-12-27 08:17:23518Discussion[[Discussion]]
519------------------------
Junio C Hamano597ffcf2007-09-17 17:33:15520
521More detail on the following is available from the
522link:user-manual.html#git-concepts[git concepts chapter of the
Junio C Hamano9e1793f2008-06-02 07:31:16523user-manual] and the linkgit:gitcore-tutorial[7][Core tutorial].
Junio C Hamano597ffcf2007-09-17 17:33:15524
525A git project normally consists of a working directory with a ".git"
526subdirectory at the top level. The .git directory contains, among other
527things, a compressed object database representing the complete history
528of the project, an "index" file which links that history to the current
529contents of the working tree, and named pointers into that history such
530as tags and branch heads.
531
532The object database contains objects of three main types: blobs, which
533hold file data; trees, which point to blobs and other trees to build up
Junio C Hamanofe986052007-12-19 07:33:38534directory hierarchies; and commits, which each reference a single tree
Junio C Hamano597ffcf2007-09-17 17:33:15535and some number of parent commits.
536
537The commit, equivalent to what other systems call a "changeset" or
538"version", represents a step in the project's history, and each parent
539represents an immediately preceding step. Commits with more than one
540parent represent merges of independent lines of development.
541
542All objects are named by the SHA1 hash of their contents, normally
543written as a string of 40 hex digits. Such names are globally unique.
544The entire history leading up to a commit can be vouched for by signing
545just that commit. A fourth object type, the tag, is provided for this
546purpose.
547
548When first created, objects are stored in individual files, but for
549efficiency may later be compressed together into "pack files".
550
551Named pointers called refs mark interesting points in history. A ref
552may contain the SHA1 name of an object or the name of another ref. Refs
553with names beginning `ref/head/` contain the SHA1 name of the most
Junio C Hamanofe986052007-12-19 07:33:38554recent commit (or "head") of a branch under development. SHA1 names of
Junio C Hamano597ffcf2007-09-17 17:33:15555tags of interest are stored under `ref/tags/`. A special ref named
556`HEAD` contains the name of the currently checked-out branch.
557
558The index file is initialized with a list of all paths and, for each
559path, a blob object and a set of attributes. The blob object represents
560the contents of the file as of the head of the current branch. The
561attributes (last modified time, size, etc.) are taken from the
562corresponding file in the working tree. Subsequent changes to the
563working tree can be found by comparing these attributes. The index may
564be updated with new content, and new commits may be created from the
565content stored in the index.
566
567The index is also capable of storing multiple entries (called "stages")
568for a given pathname. These stages are used to hold the various
569unmerged version of a file when a merge is in progress.
Junio C Hamano1a4e8412005-12-27 08:17:23570
571Authors
572-------
573* git's founding father is Linus Torvalds <torvalds@osdl.org>.
Junio C Hamanodbb64592007-09-01 11:17:39574* The current git nurse is Junio C Hamano <gitster@pobox.com>.
Junio C Hamanoe0facb92007-12-05 10:59:48575* The git potty was written by Andreas Ericsson <ae@op5.se>.
Junio C Hamano1a4e8412005-12-27 08:17:23576* General upbringing is handled by the git-list <git@vger.kernel.org>.
577
578Documentation
579--------------
580The documentation for git suite was started by David Greaves
581<david@dgreaves.com>, and later enhanced greatly by the
582contributors on the git-list <git@vger.kernel.org>.
583
Junio C Hamano9e1793f2008-06-02 07:31:16584SEE ALSO
585--------
586linkgit:gittutorial[7], linkgit:gittutorial-2[7],
587linkgit:giteveryday[7], linkgit:gitcvs-migration[7],
588linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
589link:user-manual.html[The Git User's Manual]
590
Junio C Hamano1a4e8412005-12-27 08:17:23591GIT
592---
Junio C Hamanof7c042d2008-06-06 22:50:53593Part of the linkgit:git[1] suite