git.txt 11.5 KB
Newer Older
1
git(7)
2 3 4 5 6 7 8 9 10
======

NAME
----
git - the stupid content tracker


SYNOPSIS
--------
11
[verse]
12
'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate]
13
    [--bare] [--git-dir=GIT_DIR] [--help] COMMAND [ARGS]
14 15 16

DESCRIPTION
-----------
17 18 19 20 21 22 23 24
Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations
and full access to internals.

See this link:tutorial.html[tutorial] to get started, then see
link:everyday.html[Everyday Git] for a useful minimum set of commands, and
"man git-commandname" for documentation of each command.  CVS users may
also want to read link:cvs-migration.html[CVS migration].
25 26 27
link:user-manual.html[Git User's Manual] is still work in
progress, but when finished hopefully it will guide a new user
in a coherent way to git enlightenment ;-).
28

P
Petr Baudis 已提交
29
The COMMAND is either a name of a Git command (see below) or an alias
30
as defined in the configuration file (see gitlink:git-config[1]).
P
Petr Baudis 已提交
31

32 33 34 35
Formatted and hyperlinked version of the latest git
documentation can be viewed at
`http://www.kernel.org/pub/software/scm/git/docs/`.

36 37 38 39 40 41
ifdef::stalenotes[]
[NOTE]
============
You are reading the documentation for the latest version of git.
Documentation for older releases are available here:

J
Junio C Hamano 已提交
42
* link:RelNotes-1.5.1.txt[release notes for 1.5.1]
43

J
Junio C Hamano 已提交
44
* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
45

J
Junio C Hamano 已提交
46
* link:RelNotes-1.5.0.7.txt[release notes for 1.5.0.7]
J
Junio C Hamano 已提交
47

J
Junio C Hamano 已提交
48
* link:RelNotes-1.5.0.6.txt[release notes for 1.5.0.6]
49

J
Junio C Hamano 已提交
50
* link:RelNotes-1.5.0.5.txt[release notes for 1.5.0.5]
51

J
Junio C Hamano 已提交
52
* link:RelNotes-1.5.0.3.txt[release notes for 1.5.0.3]
53

J
Junio C Hamano 已提交
54 55 56 57 58
* link:RelNotes-1.5.0.2.txt[release notes for 1.5.0.2]

* link:RelNotes-1.5.0.1.txt[release notes for 1.5.0.1]

* link:RelNotes-1.5.0.txt[release notes for 1.5.0]
59

60 61 62 63 64 65 66 67 68 69 70 71
* link:v1.4.4.4/git.html[documentation for release 1.4.4.4]

* link:v1.3.3/git.html[documentation for release 1.3.3]

* link:v1.2.6/git.html[documentation for release 1.2.6]

* link:v1.0.13/git.html[documentation for release 1.0.13]

============

endif::stalenotes[]

72 73 74
OPTIONS
-------
--version::
F
Fredrik Kuivinen 已提交
75
	Prints the git suite version that the 'git' program came from.
76 77

--help::
F
Fredrik Kuivinen 已提交
78 79 80 81
	Prints the synopsis and a list of the most commonly used
	commands.  If a git command is named this option will bring up
	the man-page for that command. If the option '--all' or '-a' is
	given then all available commands are printed.
82 83

--exec-path::
F
Fredrik Kuivinen 已提交
84
	Path to wherever your core git programs are installed.
85 86 87 88
	This can also be controlled by setting the GIT_EXEC_PATH
	environment variable. If no path is given 'git' will print
	the current setting and then exit.

89 90 91 92 93 94 95 96 97
-p|--paginate::
	Pipe all output into 'less' (or if set, $PAGER).

--git-dir=<path>::
	Set the path to the repository. This can also be controlled by
	setting the GIT_DIR environment variable.

--bare::
	Same as --git-dir=`pwd`.
98

99 100
FURTHER DOCUMENTATION
---------------------
101

102 103
See the references above to get started using git.  The following is
probably more detail than necessary for a first-time user.
J
Junio C Hamano 已提交
104

105 106 107
The <<Discussion,Discussion>> section below and the
link:core-tutorial.html[Core tutorial] both provide introductions to the
underlying git architecture.
108

109 110
See also the link:howto-index.html[howto] documents for some useful
examples.
111

112 113
GIT COMMANDS
------------
114

115 116
We divide git into high level ("porcelain") commands and low level
("plumbing") commands.
117

118 119 120 121 122 123 124 125
High-level commands (porcelain)
-------------------------------

We separate the porcelain commands into the main commands and some
ancillary user utilities.

Main porcelain commands
~~~~~~~~~~~~~~~~~~~~~~~
126

127
include::cmds-mainporcelain.txt[]
128

129
Ancillary Commands
130
~~~~~~~~~~~~~~~~~~
131 132
Manipulators:

133
include::cmds-ancillarymanipulators.txt[]
134

135
Interrogators:
136

137
include::cmds-ancillaryinterrogators.txt[]
138

139 140 141 142 143 144 145 146 147 148

Interacting with Others
~~~~~~~~~~~~~~~~~~~~~~~

These commands are to interact with foreign SCM and with other
people via patch over e-mail.

include::cmds-foreignscminterface.txt[]


149 150 151 152 153 154 155 156 157
Low-level commands (plumbing)
-----------------------------

Although git includes its
own porcelain layer, its low-level commands are sufficient to support
development of alternative porcelains.  Developers of such porcelains
might start by reading about gitlink:git-update-index[1] and
gitlink:git-read-tree[1].

158 159 160 161 162 163 164 165 166
The interface (input, output, set of options and the semantics)
to these low-level commands are meant to be a lot more stable
than Porcelain level commands, because these commands are
primarily for scripted use.  The interface to Porcelain commands
on the other hand are subject to change in order to improve the
end user experience.

The following description divides
the low-level commands into commands that manipulate objects (in
167 168 169 170
the repository, index, and working tree), commands that interrogate and
compare objects, and commands that move objects and references between
repositories.

171

172 173 174
Manipulation commands
~~~~~~~~~~~~~~~~~~~~~

175
include::cmds-plumbingmanipulators.txt[]
176 177 178 179 180


Interrogation commands
~~~~~~~~~~~~~~~~~~~~~~

181
include::cmds-plumbinginterrogators.txt[]
182 183 184 185 186 187 188 189

In general, the interrogate commands do not touch the files in
the working tree.


Synching repositories
~~~~~~~~~~~~~~~~~~~~~

190
include::cmds-synchingrepositories.txt[]
191

192 193 194 195 196 197 198 199 200 201 202 203 204 205
The following are helper programs used by the above; end users
typically do not use them directly.

include::cmds-synchelpers.txt[]


Internal helper commands
~~~~~~~~~~~~~~~~~~~~~~~~

These are internal helper commands used by other commands; end
users typically do not use them directly.

include::cmds-purehelpers.txt[]

206

J
Junio C Hamano 已提交
207 208 209
Configuration Mechanism
-----------------------

J
Junio C Hamano 已提交
210
Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
J
Junio C Hamano 已提交
211
is used to hold per-repository configuration options.  It is a
P
Pavel Roskin 已提交
212
simple text file modeled after `.ini` format familiar to some
J
Junio C Hamano 已提交
213 214 215 216
people.  Here is an example:

------------
#
J
Junio C Hamano 已提交
217
# A '#' or ';' character indicates a comment.
J
Junio C Hamano 已提交
218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235
#

; core variables
[core]
	; Don't trust file modes
	filemode = false

; user identity
[user]
	name = "Junio C Hamano"
	email = "junkio@twinsun.com"

------------

Various commands read from the configuration file and adjust
their operation accordingly.


236
Identifier Terminology
237 238
----------------------
<object>::
J
Junio C Hamano 已提交
239
	Indicates the object name for any type of object.
240 241

<blob>::
J
Junio C Hamano 已提交
242
	Indicates a blob object name.
243 244

<tree>::
J
Junio C Hamano 已提交
245
	Indicates a tree object name.
246 247

<commit>::
J
Junio C Hamano 已提交
248
	Indicates a commit object name.
249 250

<tree-ish>::
J
Junio C Hamano 已提交
251
	Indicates a tree, commit or tag object name.  A
252 253 254
	command that takes a <tree-ish> argument ultimately wants to
	operate on a <tree> object but automatically dereferences
	<commit> and <tag> objects that point at a <tree>.
255

256 257 258 259 260 261
<commit-ish>::
	Indicates a commit or tag object name.  A
	command that takes a <commit-ish> argument ultimately wants to
	operate on a <commit> object but automatically dereferences
	<tag> objects that point at a <commit>.

262 263
<type>::
	Indicates that an object type is required.
J
Junio C Hamano 已提交
264
	Currently one of: `blob`, `tree`, `commit`, or `tag`.
265 266

<file>::
J
Junio C Hamano 已提交
267 268
	Indicates a filename - almost always relative to the
	root of the tree structure `GIT_INDEX_FILE` describes.
269

270 271
Symbolic Identifiers
--------------------
272
Any git command accepting any <object> can also use the following
273
symbolic notation:
274 275

HEAD::
J
Junio C Hamano 已提交
276 277 278
	indicates the head of the current branch (i.e. the
	contents of `$GIT_DIR/HEAD`).

279
<tag>::
J
Junio C Hamano 已提交
280 281 282
	a valid tag 'name'
	(i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).

283
<head>::
J
Junio C Hamano 已提交
284 285 286
	a valid head 'name'
	(i.e. the contents of `$GIT_DIR/refs/heads/<head>`).

287 288 289
For a more complete list of ways to spell object names, see
"SPECIFYING REVISIONS" section in gitlink:git-rev-parse[1].

290 291 292 293

File/Directory Structure
------------------------

J
Junio C Hamano 已提交
294
Please see link:repository-layout.html[repository layout] document.
295

296 297
Read link:hooks.html[hooks] for more details about each hook.

298
Higher level SCMs may provide and manage additional information in the
J
Junio C Hamano 已提交
299
`$GIT_DIR`.
300

J
Junio C Hamano 已提交
301

302 303
Terminology
-----------
304
Please see link:glossary.html[glossary] document.
305 306 307 308 309 310


Environment Variables
---------------------
Various git commands use the following environment variables:

311 312 313 314
The git Repository
~~~~~~~~~~~~~~~~~~
These environment variables apply to 'all' core git commands. Nb: it
is worth noting that they may be used/overridden by SCMS sitting above
J
Junio C Hamano 已提交
315
git so take care if using Cogito etc.
316 317 318

'GIT_INDEX_FILE'::
	This environment allows the specification of an alternate
319 320
	index file. If not specified, the default of `$GIT_DIR/index`
	is used.
321 322 323 324 325 326 327 328 329 330

'GIT_OBJECT_DIRECTORY'::
	If the object storage directory is specified via this
	environment variable then the sha1 directories are created
	underneath - otherwise the default `$GIT_DIR/objects`
	directory is used.

'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
	Due to the immutable nature of git objects, old objects can be
	archived into shared, read-only directories. This variable
331
	specifies a ":" separated list of git object directories which
332 333 334 335
	can be used to search for git objects. New objects will not be
	written to these directories.

'GIT_DIR'::
J
Junio C Hamano 已提交
336 337 338
	If the 'GIT_DIR' environment variable is set then it
	specifies a path to use instead of the default `.git`
	for the base of the repository.
339 340 341 342 343 344 345 346

git Commits
~~~~~~~~~~~
'GIT_AUTHOR_NAME'::
'GIT_AUTHOR_EMAIL'::
'GIT_AUTHOR_DATE'::
'GIT_COMMITTER_NAME'::
'GIT_COMMITTER_EMAIL'::
347
'GIT_COMMITTER_DATE'::
348
	see gitlink:git-commit-tree[1]
349 350 351

git Diffs
~~~~~~~~~
352
'GIT_DIFF_OPTS'::
353 354 355 356 357
	Only valid setting is "--unified=??" or "-u??" to set the
	number of context lines shown when a unified diff is created.
	This takes precedence over any "-U" or "--unified" option
	value passed on the git diff command line.

358
'GIT_EXTERNAL_DIFF'::
359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381
	When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
	program named by it is called, instead of the diff invocation
	described above.  For a path that is added, removed, or modified,
        'GIT_EXTERNAL_DIFF' is called with 7 parameters:

	path old-file old-hex old-mode new-file new-hex new-mode
+
where:

	<old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
                         contents of <old|new>,
	<old|new>-hex:: are the 40-hexdigit SHA1 hashes,
	<old|new>-mode:: are the octal representation of the file modes.

+
The file parameters can point at the user's working file
(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
when a new file is added), or a temporary file (e.g. `old-file` in the
index).  'GIT_EXTERNAL_DIFF' should not worry about unlinking the
temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
+
For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
parameter, <path>.
382

383 384
other
~~~~~
385 386 387
'GIT_PAGER'::
	This environment variable overrides `$PAGER`.

388
'GIT_TRACE'::
389 390
	If this variable is set to "1", "2" or "true" (comparison
	is case insensitive), git will print `trace:` messages on
391 392
	stderr telling about alias expansion, built-in command
	execution and external command execution.
393 394 395 396 397 398 399 400
	If this variable is set to an integer value greater than 1
	and lower than 10 (strictly) then git will interpret this
	value as an open file descriptor and will try to write the
	trace messages into this file descriptor.
	Alternatively, if this variable is set to an absolute path
	(starting with a '/' character), git will interpret this
	as a file path and will try to write the trace messages
	into it.
401

J
Junio C Hamano 已提交
402 403
Discussion[[Discussion]]
------------------------
N
Nicolas Pitre 已提交
404
include::core-intro.txt[]
405

406 407
Authors
-------
408 409 410 411
* git's founding father is Linus Torvalds <torvalds@osdl.org>.
* The current git nurse is Junio C Hamano <junkio@cox.net>.
* The git potty was written by Andres Ericsson <ae@op5.se>.
* General upbringing is handled by the git-list <git@vger.kernel.org>.
412 413 414

Documentation
--------------
415 416 417
The documentation for git suite was started by David Greaves
<david@dgreaves.com>, and later enhanced greatly by the
contributors on the git-list <git@vger.kernel.org>.
418 419 420

GIT
---
421
Part of the gitlink:git[7] suite
422