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

NAME
----
git - the stupid content tracker


SYNOPSIS
--------
11
'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [--help] COMMAND [ARGS]
12 13 14

DESCRIPTION
-----------
15 16 17 18 19 20 21 22 23 24 25 26
'git' is both a program and a directory content tracker system.
The program 'git' is just a wrapper to reach the core git programs
(or a potty if you like, as it's not exactly porcelain but still
brings your stuff to the plumbing).

OPTIONS
-------
--version::
	prints the git suite version that the 'git' program came from.

--help::
	prints the synopsis and a list of available commands.
27 28
	If a git command is named this option will bring up the
	man-page for that command.
29 30 31 32 33 34 35 36 37

--exec-path::
	path to wherever your core git programs are installed.
	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.

CORE GIT COMMANDS
-----------------
38 39 40
Before reading this cover to cover, you may want to take a look
at the link:tutorial.html[tutorial] document.

J
Junio C Hamano 已提交
41 42 43 44 45 46 47
The <<Discussion>> section below contains much useful definition
and clarification info - read that first.  After that, if you
are interested in using git to manage (version control)
projects, read on commands listed in Porcelain-ish commands
section next.  On the other hand, if you are writing your own
Porcelain, I suggest reading gitlink:git-update-index[1] and
gitlink:git-read-tree[1] first.
48

J
Junio C Hamano 已提交
49 50 51
If you are migrating from CVS, link:cvs-migration.html[cvs migration]
document may be helpful after you finish the tutorial.

52 53 54 55 56
After you get the general feel from the tutorial and this
overview page, you may want to take a look at the
link:howto-index.html[howto] documents.


57 58 59
David Greaves <david@dgreaves.com>
08/05/05

J
Junio C Hamano 已提交
60 61
Updated by Junio C Hamano <junkio@cox.net> on 2005-05-05 and
further on 2005-12-07 to reflect recent changes.
62 63 64 65

Commands Overview
-----------------
The git commands can helpfully be split into those that manipulate
J
Junio C Hamano 已提交
66
the repository, the index and the files in the working tree, those that
67 68
interrogate and compare them, and those that moves objects and
references between repositories.
69

J
Junio C Hamano 已提交
70 71 72 73
In addition, git itself comes with a spartan set of porcelain
commands.  They are usable but are not meant to compete with real
Porcelains.

74
There are also some ancillary programs that can be viewed as useful
75 76 77
aids for using the core commands but which are unlikely to be used by
SCMs layered over git.

78 79
Manipulation commands
~~~~~~~~~~~~~~~~~~~~~
80
gitlink:git-apply[1]::
81 82 83
	Reads a "diff -up1" or git generated patch file and
	applies it to the working tree.

84
gitlink:git-checkout-index[1]::
J
Junio C Hamano 已提交
85
	Copy files from the index to the working tree.
86

87
gitlink:git-commit-tree[1]::
J
Junio C Hamano 已提交
88
	Creates a new commit object.
89

90
gitlink:git-hash-object[1]::
91 92
	Computes the object ID from a file.

J
Jonas Fonseca 已提交
93
gitlink:git-index-pack[1]::
J
Junio C Hamano 已提交
94
	Build pack idx file for an existing packed archive.
S
Sergey Vlasov 已提交
95

96
gitlink:git-init-db[1]::
J
Junio C Hamano 已提交
97 98
	Creates an empty git object database, or reinitialize an
	existing one.
99

100
gitlink:git-merge-index[1]::
J
Junio C Hamano 已提交
101
	Runs a merge for files needing merging.
102

103
gitlink:git-mktag[1]::
J
Junio C Hamano 已提交
104
	Creates a tag object.
105

106
gitlink:git-pack-objects[1]::
107 108
	Creates a packed archive of objects.

109
gitlink:git-prune-packed[1]::
110 111
	Remove extra objects that are already in pack files.

112
gitlink:git-read-tree[1]::
J
Junio C Hamano 已提交
113
	Reads tree information into the index.
114

115 116 117
gitlink:git-repo-config[1]::
	Get and set options in .git/config.

118
gitlink:git-unpack-objects[1]::
119 120
	Unpacks objects out of a packed archive.

121
gitlink:git-update-index[1]::
J
Junio C Hamano 已提交
122
	Registers files in the working tree to the index.
123

124
gitlink:git-write-tree[1]::
J
Junio C Hamano 已提交
125
	Creates a tree from the index.
126

127

128 129
Interrogation commands
~~~~~~~~~~~~~~~~~~~~~~
130

131
gitlink:git-cat-file[1]::
J
Junio C Hamano 已提交
132
	Provide content or type/size information for repository objects.
133

134
gitlink:git-diff-index[1]::
J
Junio C Hamano 已提交
135
	Compares content and mode of blobs between the index and repository.
136

137
gitlink:git-diff-files[1]::
J
Junio C Hamano 已提交
138
	Compares files in the working tree and the index.
139

140
gitlink:git-diff-stages[1]::
J
Junio C Hamano 已提交
141
	Compares two "merge stages" in the index.
142

143
gitlink:git-diff-tree[1]::
J
Junio C Hamano 已提交
144
	Compares the content and mode of blobs found via two tree objects.
145

146
gitlink:git-fsck-objects[1]::
J
Junio C Hamano 已提交
147
	Verifies the connectivity and validity of the objects in the database.
148

149
gitlink:git-ls-files[1]::
J
Junio C Hamano 已提交
150
	Information about files in the index and the working tree.
151

152
gitlink:git-ls-tree[1]::
J
Junio C Hamano 已提交
153
	Displays a tree object in human readable form.
154

155
gitlink:git-merge-base[1]::
J
Junio C Hamano 已提交
156
	Finds as good common ancestors as possible for a merge.
157

158
gitlink:git-name-rev[1]::
J
Junio C Hamano 已提交
159
	Find symbolic names for given revs.
160

161
gitlink:git-rev-list[1]::
J
Junio C Hamano 已提交
162
	Lists commit objects in reverse chronological order.
163

164
gitlink:git-show-index[1]::
165 166
	Displays contents of a pack idx file.

167
gitlink:git-tar-tree[1]::
J
Junio C Hamano 已提交
168
	Creates a tar archive of the files in the named tree object.
169

170
gitlink:git-unpack-file[1]::
J
Junio C Hamano 已提交
171
	Creates a temporary file with a blob's contents.
172

173
gitlink:git-var[1]::
J
Junio C Hamano 已提交
174
	Displays a git logical variable.
175

176
gitlink:git-verify-pack[1]::
J
Junio C Hamano 已提交
177
	Validates packed git archive files.
178

J
Junio C Hamano 已提交
179 180
In general, the interrogate commands do not touch the files in
the working tree.
181 182


183 184 185
Synching repositories
~~~~~~~~~~~~~~~~~~~~~

186
gitlink:git-clone-pack[1]::
187
	Clones a repository into the current repository (engine
J
Junio C Hamano 已提交
188
	for ssh and local transport).
189

190
gitlink:git-fetch-pack[1]::
J
Junio C Hamano 已提交
191 192
	Updates from a remote repository (engine for ssh and
	local transport).
193

194
gitlink:git-http-fetch[1]::
J
Junio C Hamano 已提交
195 196
	Downloads a remote git repository via HTTP by walking
	commit chain.
197

198
gitlink:git-local-fetch[1]::
J
Junio C Hamano 已提交
199 200
	Duplicates another git repository on a local system by
	walking commit chain.
201

202
gitlink:git-peek-remote[1]::
J
Junio C Hamano 已提交
203 204 205
	Lists references on a remote repository using
	upload-pack protocol (engine for ssh and local
	transport).
206

207
gitlink:git-receive-pack[1]::
208 209
	Invoked by 'git-send-pack' to receive what is pushed to it.

210
gitlink:git-send-pack[1]::
211
	Pushes to a remote repository, intelligently.
212

P
Petr Baudis 已提交
213 214 215
gitlink:git-shell[1]::
	Restricted shell for GIT-only SSH access.

216
gitlink:git-ssh-fetch[1]::
J
Junio C Hamano 已提交
217 218
	Pulls from a remote repository over ssh connection by
	walking commit chain.
219

220
gitlink:git-ssh-upload[1]::
J
Junio C Hamano 已提交
221
	Helper "server-side" program used by git-ssh-fetch.
222

223
gitlink:git-update-server-info[1]::
224 225 226
	Updates auxiliary information on a dumb server to help
	clients discover references and packs on it.

227
gitlink:git-upload-pack[1]::
228 229 230
	Invoked by 'git-clone-pack' and 'git-fetch-pack' to push
	what are asked for.

231

J
Junio C Hamano 已提交
232 233
Porcelain-ish Commands
----------------------
234

235
gitlink:git-add[1]::
J
Junio C Hamano 已提交
236
	Add paths to the index.
237

238 239 240
gitlink:git-am[1]::
	Apply patches from a mailbox, but cooler.

241
gitlink:git-applymbox[1]::
J
Junio C Hamano 已提交
242
	Apply patches from a mailbox, original version by Linus.
243

244
gitlink:git-bisect[1]::
J
Junio C Hamano 已提交
245
	Find the change that introduced a bug by binary search.
246

247
gitlink:git-branch[1]::
248 249
	Create and Show branches.

250
gitlink:git-checkout[1]::
J
Junio C Hamano 已提交
251 252
	Checkout and switch to a branch.

253
gitlink:git-cherry-pick[1]::
254
	Cherry-pick the effect of an existing commit.
J
Junio C Hamano 已提交
255

256
gitlink:git-clone[1]::
257
	Clones a repository into a new directory.
J
Junio C Hamano 已提交
258

259
gitlink:git-commit[1]::
260
	Record changes to the repository.
J
Junio C Hamano 已提交
261

262
gitlink:git-diff[1]::
263
	Show changes between commits, commit and working tree, etc.
J
Junio C Hamano 已提交
264

265
gitlink:git-fetch[1]::
J
Junio C Hamano 已提交
266 267
	Download from a remote repository via various protocols.

268
gitlink:git-format-patch[1]::
269
	Prepare patches for e-mail submission.
J
Junio C Hamano 已提交
270

271
gitlink:git-grep[1]::
J
Junio C Hamano 已提交
272
	Print lines matching a pattern.
273

274
gitlink:git-log[1]::
275
	Shows commit logs.
J
Junio C Hamano 已提交
276

277
gitlink:git-ls-remote[1]::
278
	Shows references in a remote or local repository.
279

280
gitlink:git-merge[1]::
J
Junio C Hamano 已提交
281 282
	Grand unified merge driver.

283 284 285
gitlink:git-mv[1]::
	Move or rename a file, a directory, or a symlink.

286
gitlink:git-octopus[1]::
287 288
	Merge more than two commits.

289
gitlink:git-pull[1]::
290 291
	Fetch from and merge with a remote repository.

292
gitlink:git-push[1]::
293 294
	Update remote refs along with associated objects.

295
gitlink:git-rebase[1]::
J
Junio C Hamano 已提交
296
	Rebase local commits to the updated upstream head.
J
Junio C Hamano 已提交
297

298
gitlink:git-repack[1]::
299 300
	Pack unpacked objects in a repository.

301
gitlink:git-reset[1]::
J
Junio C Hamano 已提交
302 303
	Reset current HEAD to the specified state.

304
gitlink:git-resolve[1]::
305
	Merge two commits.
306

307
gitlink:git-revert[1]::
308 309
	Revert an existing commit.

310
gitlink:git-shortlog[1]::
311 312
	Summarizes 'git log' output.

313
gitlink:git-show-branch[1]::
314 315
	Show branches and their commits.

316
gitlink:git-status[1]::
317
	Shows the working tree status.
318

319
gitlink:git-verify-tag[1]::
320 321
	Check the GPG signature of tag.

322
gitlink:git-whatchanged[1]::
323 324
	Shows commit logs and differences they introduce.

325

326 327
Ancillary Commands
------------------
328 329
Manipulators:

330
gitlink:git-applypatch[1]::
331
	Apply one patch extracted from an e-mail.
332

333
gitlink:git-archimport[1]::
J
Junio C Hamano 已提交
334 335
	Import an arch repository into git.

336
gitlink:git-convert-objects[1]::
J
Junio C Hamano 已提交
337
	Converts old-style git repository.
338

339
gitlink:git-cvsimport[1]::
340 341
	Salvage your data out of another SCM people love to hate.

J
Junio C Hamano 已提交
342
gitlink:git-lost-found[1]::
J
Junio C Hamano 已提交
343 344
	Recover lost refs that luckily have not yet been pruned.

345
gitlink:git-merge-one-file[1]::
J
Junio C Hamano 已提交
346
	The standard helper program to use with `git-merge-index`.
347

348
gitlink:git-prune[1]::
J
Junio C Hamano 已提交
349
	Prunes all unreachable objects from the object database.
350

351
gitlink:git-relink[1]::
352 353
	Hardlink common objects in local repositories.

354 355 356
gitlink:git-svnimport[1]::
	Import a SVN repository into git.

357
gitlink:git-sh-setup[1]::
358 359
	Common git shell script setup code.

360
gitlink:git-symbolic-ref[1]::
J
Junio C Hamano 已提交
361
	Read and modify symbolic refs.
362

363
gitlink:git-tag[1]::
J
Junio C Hamano 已提交
364
	An example script to create a tag object signed with GPG.
365

366 367 368
gitlink:git-update-ref[1]::
	Update the object name stored in a ref safely.

369

370
Interrogators:
371

372 373 374
gitlink:git-check-ref-format[1]::
	Make sure ref name is well formed.

375
gitlink:git-cherry[1]::
376
	Find commits not merged upstream.
377

378
gitlink:git-count-objects[1]::
379 380
	Count unpacked number of objects and their disk consumption.

381
gitlink:git-daemon[1]::
382
	A really simple server for git repositories.
J
Junio C Hamano 已提交
383

384
gitlink:git-get-tar-commit-id[1]::
J
Junio C Hamano 已提交
385 386
	Extract commit ID from an archive created using git-tar-tree.

387
gitlink:git-mailinfo[1]::
J
Junio C Hamano 已提交
388 389 390
	Extracts patch and authorship information from a single
	e-mail message, optionally transliterating the commit
	message into utf-8.
391

392
gitlink:git-mailsplit[1]::
J
Junio C Hamano 已提交
393 394
	A stupid program to split UNIX mbox format mailbox into
	individual pieces of e-mail.
395

396
gitlink:git-patch-id[1]::
397
	Compute unique ID for a patch.
398

399
gitlink:git-parse-remote[1]::
J
Junio C Hamano 已提交
400
	Routines to help parsing `$GIT_DIR/remotes/` files.
J
Junio C Hamano 已提交
401

402
gitlink:git-request-pull[1]::
J
Junio C Hamano 已提交
403
	git-request-pull.
J
Junio C Hamano 已提交
404

405
gitlink:git-rev-parse[1]::
J
Junio C Hamano 已提交
406 407
	Pick out and massage parameters.

408
gitlink:git-send-email[1]::
409
	Send patch e-mails out of "format-patch --mbox" output.
410

411 412 413
gitlink:git-symbolic-refs[1]::
	Read and modify symbolic refs.

414
gitlink:git-stripspace[1]::
J
Junio C Hamano 已提交
415
	Filter out empty lines.
416 417


J
Junio C Hamano 已提交
418 419
Commands not yet documented
---------------------------
420

421
gitlink:gitk[1]::
J
Junio C Hamano 已提交
422
	The gitk repository browser.
423 424


J
Junio C Hamano 已提交
425 426 427
Configuration Mechanism
-----------------------

J
Junio C Hamano 已提交
428
Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
J
Junio C Hamano 已提交
429 430 431 432 433 434
is used to hold per-repository configuration options.  It is a
simple text file modelled after `.ini` format familiar to some
people.  Here is an example:

------------
#
J
Junio C Hamano 已提交
435
# A '#' or ';' character indicates a comment.
J
Junio C Hamano 已提交
436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453
#

; 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.


454
Identifier Terminology
455 456
----------------------
<object>::
J
Junio C Hamano 已提交
457
	Indicates the object name for any type of object.
458 459

<blob>::
J
Junio C Hamano 已提交
460
	Indicates a blob object name.
461 462

<tree>::
J
Junio C Hamano 已提交
463
	Indicates a tree object name.
464 465

<commit>::
J
Junio C Hamano 已提交
466
	Indicates a commit object name.
467 468

<tree-ish>::
J
Junio C Hamano 已提交
469
	Indicates a tree, commit or tag object name.  A
470 471 472
	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>.
473 474 475

<type>::
	Indicates that an object type is required.
J
Junio C Hamano 已提交
476
	Currently one of: `blob`, `tree`, `commit`, or `tag`.
477 478

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

482 483
Symbolic Identifiers
--------------------
484
Any git command accepting any <object> can also use the following
485
symbolic notation:
486 487

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

491
<tag>::
J
Junio C Hamano 已提交
492 493 494
	a valid tag 'name'
	(i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).

495
<head>::
J
Junio C Hamano 已提交
496 497 498
	a valid head 'name'
	(i.e. the contents of `$GIT_DIR/refs/heads/<head>`).

499
<snap>::
J
Junio C Hamano 已提交
500 501
	a valid snapshot 'name'
	(i.e. the contents of `$GIT_DIR/refs/snap/<snap>`).
502 503 504 505 506


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

J
Junio C Hamano 已提交
507
Please see link:repository-layout.html[repository layout] document.
508 509

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

J
Junio C Hamano 已提交
512

513 514
Terminology
-----------
515
Please see link:glossary.html[glossary] document.
516 517 518 519 520 521


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

522 523 524 525
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 已提交
526
git so take care if using Cogito etc.
527 528 529

'GIT_INDEX_FILE'::
	This environment allows the specification of an alternate
530 531
	index file. If not specified, the default of `$GIT_DIR/index`
	is used.
532 533 534 535 536 537 538 539 540 541

'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
542
	specifies a ":" separated list of git object directories which
543 544 545 546
	can be used to search for git objects. New objects will not be
	written to these directories.

'GIT_DIR'::
J
Junio C Hamano 已提交
547 548 549
	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.
550 551 552 553 554 555 556 557

git Commits
~~~~~~~~~~~
'GIT_AUTHOR_NAME'::
'GIT_AUTHOR_EMAIL'::
'GIT_AUTHOR_DATE'::
'GIT_COMMITTER_NAME'::
'GIT_COMMITTER_EMAIL'::
558
	see gitlink:git-commit-tree[1]
559 560 561

git Diffs
~~~~~~~~~
562 563
'GIT_DIFF_OPTS'::
'GIT_EXTERNAL_DIFF'::
564
	see the "generating patches" section in :
565 566 567
	gitlink:git-diff-index[1];
	gitlink:git-diff-files[1];
	gitlink:git-diff-tree[1]
568

J
Junio C Hamano 已提交
569 570
Discussion[[Discussion]]
------------------------
571 572
include::../README[]

573 574 575
Authors
-------
	git's founding father is Linus Torvalds <torvalds@osdl.org>.
J
Junio C Hamano 已提交
576
	The current git nurse is Junio C Hamano <junkio@cox.net>.
577 578
	The git potty was written by Andres Ericsson <ae@op5.se>.
	General upbringing is handled by the git-list <git@vger.kernel.org>.
579 580 581 582 583 584 585

Documentation
--------------
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
586
Part of the gitlink:git[7] suite
587