blob: 7cd346798615eb31fbf4d6b8a329a7ff36d78741 [file] [log] [blame]
Junio C Hamano1a4e8412005-12-27 08:17:231git(7)
2======
3
4NAME
5----
6git - the stupid content tracker
7
8
9SYNOPSIS
10--------
Junio C Hamano6b2cee12006-08-26 08:43:3111[verse]
Junio C Hamanof870ef82006-07-29 09:10:1312'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate]
Junio C Hamano6b2cee12006-08-26 08:43:3113 [--bare] [--git-dir=GIT_DIR] [--help] COMMAND [ARGS]
Junio C Hamano1a4e8412005-12-27 08:17:2314
15DESCRIPTION
16-----------
Junio C Hamanoe27fb932006-04-03 05:34:1017Git is a fast, scalable, distributed revision control system with an
18unusually rich command set that provides both high-level operations
19and full access to internals.
20
21See this link:tutorial.html[tutorial] to get started, then see
22link:everyday.html[Everyday Git] for a useful minimum set of commands, and
23"man git-commandname" for documentation of each command. CVS users may
24also want to read link:cvs-migration.html[CVS migration].
Junio C Hamano1a4e8412005-12-27 08:17:2325
Junio C Hamano33db4372006-06-07 19:51:4526The COMMAND is either a name of a Git command (see below) or an alias
Junio C Hamano7ad22dc2007-01-29 02:55:4827as defined in the configuration file (see gitlink:git-config[1]).
Junio C Hamano33db4372006-06-07 19:51:4528
Junio C Hamano1a4e8412005-12-27 08:17:2329OPTIONS
30-------
31--version::
Junio C Hamano01078922006-03-10 00:31:4732Prints the git suite version that the 'git' program came from.
Junio C Hamano1a4e8412005-12-27 08:17:2333
34--help::
Junio C Hamano01078922006-03-10 00:31:4735Prints the synopsis and a list of the most commonly used
36commands. If a git command is named this option will bring up
37the man-page for that command. If the option '--all' or '-a' is
38given then all available commands are printed.
Junio C Hamano1a4e8412005-12-27 08:17:2339
40--exec-path::
Junio C Hamano01078922006-03-10 00:31:4741Path to wherever your core git programs are installed.
Junio C Hamano1a4e8412005-12-27 08:17:2342This can also be controlled by setting the GIT_EXEC_PATH
43environment variable. If no path is given 'git' will print
44the current setting and then exit.
45
Junio C Hamanof870ef82006-07-29 09:10:1346-p|--paginate::
47Pipe all output into 'less' (or if set, $PAGER).
48
49--git-dir=<path>::
50Set the path to the repository. This can also be controlled by
51setting the GIT_DIR environment variable.
52
53--bare::
54Same as --git-dir=`pwd`.
Junio C Hamano1a4e8412005-12-27 08:17:2355
Junio C Hamanoe27fb932006-04-03 05:34:1056FURTHER DOCUMENTATION
57---------------------
Junio C Hamano1a4e8412005-12-27 08:17:2358
Junio C Hamanoe27fb932006-04-03 05:34:1059See the references above to get started using git. The following is
60probably more detail than necessary for a first-time user.
Junio C Hamano1a4e8412005-12-27 08:17:2361
Junio C Hamanoe27fb932006-04-03 05:34:1062The <<Discussion,Discussion>> section below and the
63link:core-tutorial.html[Core tutorial] both provide introductions to the
64underlying git architecture.
Junio C Hamano1a4e8412005-12-27 08:17:2365
Junio C Hamanoe27fb932006-04-03 05:34:1066See also the link:howto-index.html[howto] documents for some useful
67examples.
Junio C Hamano1a4e8412005-12-27 08:17:2368
Junio C Hamanoe27fb932006-04-03 05:34:1069GIT COMMANDS
70------------
Junio C Hamano1a4e8412005-12-27 08:17:2371
Junio C Hamanoe27fb932006-04-03 05:34:1072We divide git into high level ("porcelain") commands and low level
73("plumbing") commands.
Junio C Hamano1a4e8412005-12-27 08:17:2374
Junio C Hamanob19b4f02006-10-29 20:47:2275High-level commands (porcelain)
76-------------------------------
77
78We separate the porcelain commands into the main commands and some
79ancillary user utilities.
80
81Main porcelain commands
82~~~~~~~~~~~~~~~~~~~~~~~
83
Junio C Hamano7c73c662007-01-19 00:37:5084include::cmds-mainporcelain.txt[]
Junio C Hamanob19b4f02006-10-29 20:47:2285
86Ancillary Commands
87~~~~~~~~~~~~~~~~~~
88Manipulators:
89
Junio C Hamano7c73c662007-01-19 00:37:5090include::cmds-ancillarymanipulators.txt[]
Junio C Hamanob19b4f02006-10-29 20:47:2291
92Interrogators:
93
Junio C Hamano7c73c662007-01-19 00:37:5094include::cmds-ancillaryinterrogators.txt[]
Junio C Hamanob19b4f02006-10-29 20:47:2295
Junio C Hamano4ad294b2007-01-20 02:22:5096
97Interacting with Others
98~~~~~~~~~~~~~~~~~~~~~~~
99
100These commands are to interact with foreign SCM and with other
101people via patch over e-mail.
102
103include::cmds-foreignscminterface.txt[]
104
105
Junio C Hamanoe27fb932006-04-03 05:34:10106Low-level commands (plumbing)
107-----------------------------
Junio C Hamano1a4e8412005-12-27 08:17:23108
Junio C Hamanoe27fb932006-04-03 05:34:10109Although git includes its
110own porcelain layer, its low-level commands are sufficient to support
111development of alternative porcelains. Developers of such porcelains
112might start by reading about gitlink:git-update-index[1] and
113gitlink:git-read-tree[1].
Junio C Hamano1a4e8412005-12-27 08:17:23114
Junio C Hamano4ad294b2007-01-20 02:22:50115The interface (input, output, set of options and the semantics)
116to these low-level commands are meant to be a lot more stable
117than Porcelain level commands, because these commands are
118primarily for scripted use. The interface to Porcelain commands
119on the other hand are subject to change in order to improve the
120end user experience.
121
122The following description divides
123the low-level commands into commands that manipulate objects (in
Junio C Hamanoe27fb932006-04-03 05:34:10124the repository, index, and working tree), commands that interrogate and
125compare objects, and commands that move objects and references between
126repositories.
Junio C Hamano1a4e8412005-12-27 08:17:23127
Junio C Hamano4ad294b2007-01-20 02:22:50128
Junio C Hamano1a4e8412005-12-27 08:17:23129Manipulation commands
130~~~~~~~~~~~~~~~~~~~~~
Junio C Hamano1a4e8412005-12-27 08:17:23131
Junio C Hamano7c73c662007-01-19 00:37:50132include::cmds-plumbingmanipulators.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23133
134
135Interrogation commands
136~~~~~~~~~~~~~~~~~~~~~~
137
Junio C Hamano7c73c662007-01-19 00:37:50138include::cmds-plumbinginterrogators.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23139
140In general, the interrogate commands do not touch the files in
141the working tree.
142
143
144Synching repositories
145~~~~~~~~~~~~~~~~~~~~~
146
Junio C Hamano7c73c662007-01-19 00:37:50147include::cmds-synchingrepositories.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23148
Junio C Hamano4ad294b2007-01-20 02:22:50149The following are helper programs used by the above; end users
150typically do not use them directly.
151
152include::cmds-synchelpers.txt[]
153
154
155Internal helper commands
156~~~~~~~~~~~~~~~~~~~~~~~~
157
158These are internal helper commands used by other commands; end
159users typically do not use them directly.
160
161include::cmds-purehelpers.txt[]
162
Junio C Hamano1a4e8412005-12-27 08:17:23163
Junio C Hamano1a4e8412005-12-27 08:17:23164Configuration Mechanism
165-----------------------
166
167Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
168is used to hold per-repository configuration options. It is a
Junio C Hamano51c2ab02006-07-09 20:38:54169simple text file modeled after `.ini` format familiar to some
Junio C Hamano1a4e8412005-12-27 08:17:23170people. Here is an example:
171
172------------
173#
174# A '#' or ';' character indicates a comment.
175#
176
177; core variables
178[core]
179; Don't trust file modes
180filemode = false
181
182; user identity
183[user]
184name = "Junio C Hamano"
185email = "junkio@twinsun.com"
186
187------------
188
189Various commands read from the configuration file and adjust
190their operation accordingly.
191
192
193Identifier Terminology
194----------------------
195<object>::
196Indicates the object name for any type of object.
197
198<blob>::
199Indicates a blob object name.
200
201<tree>::
202Indicates a tree object name.
203
204<commit>::
205Indicates a commit object name.
206
207<tree-ish>::
208Indicates a tree, commit or tag object name. A
209command that takes a <tree-ish> argument ultimately wants to
210operate on a <tree> object but automatically dereferences
211<commit> and <tag> objects that point at a <tree>.
212
213<type>::
214Indicates that an object type is required.
215Currently one of: `blob`, `tree`, `commit`, or `tag`.
216
217<file>::
218Indicates a filename - almost always relative to the
219root of the tree structure `GIT_INDEX_FILE` describes.
220
221Symbolic Identifiers
222--------------------
223Any git command accepting any <object> can also use the following
224symbolic notation:
225
226HEAD::
227indicates the head of the current branch (i.e. the
228contents of `$GIT_DIR/HEAD`).
229
230<tag>::
231a valid tag 'name'
232(i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).
233
234<head>::
235a valid head 'name'
236(i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
237
Junio C Hamanoff4b4312006-10-25 22:55:31238For a more complete list of ways to spell object names, see
239"SPECIFYING REVISIONS" section in gitlink:git-rev-parse[1].
240
Junio C Hamano1a4e8412005-12-27 08:17:23241
242File/Directory Structure
243------------------------
244
245Please see link:repository-layout.html[repository layout] document.
246
Junio C Hamano818f7d62006-03-26 01:49:30247Read link:hooks.html[hooks] for more details about each hook.
248
Junio C Hamano1a4e8412005-12-27 08:17:23249Higher level SCMs may provide and manage additional information in the
250`$GIT_DIR`.
251
252
253Terminology
254-----------
255Please see link:glossary.html[glossary] document.
256
257
258Environment Variables
259---------------------
260Various git commands use the following environment variables:
261
262The git Repository
263~~~~~~~~~~~~~~~~~~
264These environment variables apply to 'all' core git commands. Nb: it
265is worth noting that they may be used/overridden by SCMS sitting above
266git so take care if using Cogito etc.
267
268'GIT_INDEX_FILE'::
269This environment allows the specification of an alternate
270index file. If not specified, the default of `$GIT_DIR/index`
271is used.
272
273'GIT_OBJECT_DIRECTORY'::
274If the object storage directory is specified via this
275environment variable then the sha1 directories are created
276underneath - otherwise the default `$GIT_DIR/objects`
277directory is used.
278
279'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
280Due to the immutable nature of git objects, old objects can be
281archived into shared, read-only directories. This variable
282specifies a ":" separated list of git object directories which
283can be used to search for git objects. New objects will not be
284written to these directories.
285
286'GIT_DIR'::
287If the 'GIT_DIR' environment variable is set then it
288specifies a path to use instead of the default `.git`
289for the base of the repository.
290
291git Commits
292~~~~~~~~~~~
293'GIT_AUTHOR_NAME'::
294'GIT_AUTHOR_EMAIL'::
295'GIT_AUTHOR_DATE'::
296'GIT_COMMITTER_NAME'::
297'GIT_COMMITTER_EMAIL'::
298see gitlink:git-commit-tree[1]
299
300git Diffs
301~~~~~~~~~
302'GIT_DIFF_OPTS'::
Junio C Hamano1c437122006-11-28 02:22:25303Only valid setting is "--unified=??" or "-u??" to set the
304number of context lines shown when a unified diff is created.
305This takes precedence over any "-U" or "--unified" option
306value passed on the git diff command line.
307
Junio C Hamano1a4e8412005-12-27 08:17:23308'GIT_EXTERNAL_DIFF'::
Junio C Hamano1c437122006-11-28 02:22:25309When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
310program named by it is called, instead of the diff invocation
311described above. For a path that is added, removed, or modified,
312 'GIT_EXTERNAL_DIFF' is called with 7 parameters:
313
314path old-file old-hex old-mode new-file new-hex new-mode
315+
316where:
317
318<old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
319 contents of <old|new>,
320<old|new>-hex:: are the 40-hexdigit SHA1 hashes,
321<old|new>-mode:: are the octal representation of the file modes.
322
323+
324The file parameters can point at the user's working file
325(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
326when a new file is added), or a temporary file (e.g. `old-file` in the
327index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the
328temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
329+
330For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
331parameter, <path>.
Junio C Hamano1a4e8412005-12-27 08:17:23332
Junio C Hamano7ccb9fd2006-07-15 01:38:40333other
334~~~~~
Junio C Hamano85e45fa2006-08-13 07:47:41335'GIT_PAGER'::
336This environment variable overrides `$PAGER`.
337
Junio C Hamano7ccb9fd2006-07-15 01:38:40338'GIT_TRACE'::
Junio C Hamanoef4b48b2006-09-04 10:08:34339If this variable is set to "1", "2" or "true" (comparison
340is case insensitive), git will print `trace:` messages on
Junio C Hamano7ccb9fd2006-07-15 01:38:40341stderr telling about alias expansion, built-in command
342execution and external command execution.
Junio C Hamanoef4b48b2006-09-04 10:08:34343If this variable is set to an integer value greater than 1
344and lower than 10 (strictly) then git will interpret this
345value as an open file descriptor and will try to write the
346trace messages into this file descriptor.
347Alternatively, if this variable is set to an absolute path
348(starting with a '/' character), git will interpret this
349as a file path and will try to write the trace messages
350into it.
Junio C Hamano7ccb9fd2006-07-15 01:38:40351
Junio C Hamano1a4e8412005-12-27 08:17:23352Discussion[[Discussion]]
353------------------------
Junio C Hamano4f9a6052007-01-17 20:25:16354include::core-intro.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23355
356Authors
357-------
358* git's founding father is Linus Torvalds <torvalds@osdl.org>.
359* The current git nurse is Junio C Hamano <junkio@cox.net>.
360* The git potty was written by Andres Ericsson <ae@op5.se>.
361* General upbringing is handled by the git-list <git@vger.kernel.org>.
362
363Documentation
364--------------
365The documentation for git suite was started by David Greaves
366<david@dgreaves.com>, and later enhanced greatly by the
367contributors on the git-list <git@vger.kernel.org>.
368
369GIT
370---
371Part of the gitlink:git[7] suite
372