git.txt 14.9 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

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

36 37 38 39 40 41 42 43 44 45

NOT LEARNING CORE GIT COMMANDS
------------------------------

This manual is intended to give complete background information
and internal workings of git, which may be too much for most
people.  The <<Discussion>> section below contains much useful
definition and clarification - read that first.

If you are interested in using git to manage (version control)
46 47
projects, use link:tutorial.html[The Tutorial] to get you started,
and then link:everyday.html[Everyday GIT] as a guide to the
48
minimum set of commands you need to know for day-to-day work.
49 50 51
Most likely, that will get you started, and you can go a long
way without knowing the low level details too much.

52
The link:core-tutorial.html[Core tutorial] document covers how things
53 54 55 56 57
internally work.

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

59 60 61 62
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.

63 64 65 66

CORE GIT COMMANDS
-----------------

67 68 69 70
If you are writing your own Porcelain, you need to be familiar
with most of the low level commands --- I suggest starting from
gitlink:git-update-index[1] and gitlink:git-read-tree[1].

71

72 73 74
Commands Overview
-----------------
The git commands can helpfully be split into those that manipulate
J
Junio C Hamano 已提交
75
the repository, the index and the files in the working tree, those that
76 77
interrogate and compare them, and those that moves objects and
references between repositories.
78

J
Junio C Hamano 已提交
79 80 81 82
In addition, git itself comes with a spartan set of porcelain
commands.  They are usable but are not meant to compete with real
Porcelains.

83
There are also some ancillary programs that can be viewed as useful
84 85 86
aids for using the core commands but which are unlikely to be used by
SCMs layered over git.

87 88
Manipulation commands
~~~~~~~~~~~~~~~~~~~~~
89
gitlink:git-apply[1]::
90 91 92
	Reads a "diff -up1" or git generated patch file and
	applies it to the working tree.

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

96
gitlink:git-commit-tree[1]::
J
Junio C Hamano 已提交
97
	Creates a new commit object.
98

99
gitlink:git-hash-object[1]::
100 101
	Computes the object ID from a file.

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

105
gitlink:git-init-db[1]::
J
Junio C Hamano 已提交
106 107
	Creates an empty git object database, or reinitialize an
	existing one.
108

109
gitlink:git-merge-index[1]::
J
Junio C Hamano 已提交
110
	Runs a merge for files needing merging.
111

112
gitlink:git-mktag[1]::
J
Junio C Hamano 已提交
113
	Creates a tag object.
114

115
gitlink:git-pack-objects[1]::
116 117
	Creates a packed archive of objects.

118
gitlink:git-prune-packed[1]::
119 120
	Remove extra objects that are already in pack files.

121
gitlink:git-read-tree[1]::
J
Junio C Hamano 已提交
122
	Reads tree information into the index.
123

124 125 126
gitlink:git-repo-config[1]::
	Get and set options in .git/config.

127
gitlink:git-unpack-objects[1]::
128 129
	Unpacks objects out of a packed archive.

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

133
gitlink:git-write-tree[1]::
J
Junio C Hamano 已提交
134
	Creates a tree from the index.
135

136

137 138
Interrogation commands
~~~~~~~~~~~~~~~~~~~~~~
139

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

J
Junio C Hamano 已提交
143 144 145
gitlink:git-describe[1]::
	Show the most recent tag that is reachable from a commit.

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

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

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

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

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

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

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

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

170
gitlink:git-name-rev[1]::
J
Junio C Hamano 已提交
171
	Find symbolic names for given revs.
172

173 174 175
gitlink:git-pack-redundant[1]::
	Find redundant pack files.

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

179
gitlink:git-show-index[1]::
180 181
	Displays contents of a pack idx file.

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

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

188
gitlink:git-var[1]::
J
Junio C Hamano 已提交
189
	Displays a git logical variable.
190

191
gitlink:git-verify-pack[1]::
J
Junio C Hamano 已提交
192
	Validates packed git archive files.
193

J
Junio C Hamano 已提交
194 195
In general, the interrogate commands do not touch the files in
the working tree.
196 197


198 199 200
Synching repositories
~~~~~~~~~~~~~~~~~~~~~

201
gitlink:git-clone-pack[1]::
202
	Clones a repository into the current repository (engine
J
Junio C Hamano 已提交
203
	for ssh and local transport).
204

205
gitlink:git-fetch-pack[1]::
J
Junio C Hamano 已提交
206 207
	Updates from a remote repository (engine for ssh and
	local transport).
208

209
gitlink:git-http-fetch[1]::
J
Junio C Hamano 已提交
210 211
	Downloads a remote git repository via HTTP by walking
	commit chain.
212

213
gitlink:git-local-fetch[1]::
J
Junio C Hamano 已提交
214 215
	Duplicates another git repository on a local system by
	walking commit chain.
216

217
gitlink:git-peek-remote[1]::
J
Junio C Hamano 已提交
218 219 220
	Lists references on a remote repository using
	upload-pack protocol (engine for ssh and local
	transport).
221

222
gitlink:git-receive-pack[1]::
223 224
	Invoked by 'git-send-pack' to receive what is pushed to it.

225
gitlink:git-send-pack[1]::
226
	Pushes to a remote repository, intelligently.
227

228 229 230
gitlink:git-http-push[1]::
	Push missing objects using HTTP/DAV.

P
Petr Baudis 已提交
231 232 233
gitlink:git-shell[1]::
	Restricted shell for GIT-only SSH access.

234
gitlink:git-ssh-fetch[1]::
J
Junio C Hamano 已提交
235 236
	Pulls from a remote repository over ssh connection by
	walking commit chain.
237

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

241
gitlink:git-update-server-info[1]::
242 243 244
	Updates auxiliary information on a dumb server to help
	clients discover references and packs on it.

245
gitlink:git-upload-pack[1]::
246 247 248
	Invoked by 'git-clone-pack' and 'git-fetch-pack' to push
	what are asked for.

249

J
Junio C Hamano 已提交
250 251
Porcelain-ish Commands
----------------------
252

253
gitlink:git-add[1]::
J
Junio C Hamano 已提交
254
	Add paths to the index.
255

256 257 258
gitlink:git-am[1]::
	Apply patches from a mailbox, but cooler.

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

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

265
gitlink:git-branch[1]::
266 267
	Create and Show branches.

268
gitlink:git-checkout[1]::
J
Junio C Hamano 已提交
269 270
	Checkout and switch to a branch.

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

274
gitlink:git-clone[1]::
275
	Clones a repository into a new directory.
J
Junio C Hamano 已提交
276

277
gitlink:git-commit[1]::
278
	Record changes to the repository.
J
Junio C Hamano 已提交
279

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

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

286
gitlink:git-format-patch[1]::
287
	Prepare patches for e-mail submission.
J
Junio C Hamano 已提交
288

289
gitlink:git-grep[1]::
J
Junio C Hamano 已提交
290
	Print lines matching a pattern.
291

292
gitlink:git-log[1]::
293
	Shows commit logs.
J
Junio C Hamano 已提交
294

295
gitlink:git-ls-remote[1]::
296
	Shows references in a remote or local repository.
297

298
gitlink:git-merge[1]::
J
Junio C Hamano 已提交
299 300
	Grand unified merge driver.

301 302 303
gitlink:git-mv[1]::
	Move or rename a file, a directory, or a symlink.

304
gitlink:git-pull[1]::
305 306
	Fetch from and merge with a remote repository.

307
gitlink:git-push[1]::
308 309
	Update remote refs along with associated objects.

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

313
gitlink:git-repack[1]::
314 315
	Pack unpacked objects in a repository.

316
gitlink:git-reset[1]::
J
Junio C Hamano 已提交
317 318
	Reset current HEAD to the specified state.

319
gitlink:git-resolve[1]::
320
	Merge two commits.
321

322
gitlink:git-revert[1]::
323 324
	Revert an existing commit.

325
gitlink:git-shortlog[1]::
326 327
	Summarizes 'git log' output.

328
gitlink:git-show-branch[1]::
329 330
	Show branches and their commits.

331
gitlink:git-status[1]::
332
	Shows the working tree status.
333

334
gitlink:git-verify-tag[1]::
335 336
	Check the GPG signature of tag.

337
gitlink:git-whatchanged[1]::
338 339
	Shows commit logs and differences they introduce.

340

341 342
Ancillary Commands
------------------
343 344
Manipulators:

345
gitlink:git-applypatch[1]::
346
	Apply one patch extracted from an e-mail.
347

348
gitlink:git-archimport[1]::
J
Junio C Hamano 已提交
349 350
	Import an arch repository into git.

351
gitlink:git-convert-objects[1]::
J
Junio C Hamano 已提交
352
	Converts old-style git repository.
353

354
gitlink:git-cvsimport[1]::
355 356
	Salvage your data out of another SCM people love to hate.

357 358 359
gitlink:git-cvsexportcommit[1]::
	Export a single commit to a CVS checkout.

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

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

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

369
gitlink:git-relink[1]::
370 371
	Hardlink common objects in local repositories.

372 373 374
gitlink:git-svnimport[1]::
	Import a SVN repository into git.

375
gitlink:git-sh-setup[1]::
376 377
	Common git shell script setup code.

378
gitlink:git-symbolic-ref[1]::
J
Junio C Hamano 已提交
379
	Read and modify symbolic refs.
380

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

384 385 386
gitlink:git-update-ref[1]::
	Update the object name stored in a ref safely.

387

388
Interrogators:
389

390 391 392
gitlink:git-check-ref-format[1]::
	Make sure ref name is well formed.

393
gitlink:git-cherry[1]::
394
	Find commits not merged upstream.
395

396
gitlink:git-count-objects[1]::
397 398
	Count unpacked number of objects and their disk consumption.

399
gitlink:git-daemon[1]::
400
	A really simple server for git repositories.
J
Junio C Hamano 已提交
401

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

405
gitlink:git-mailinfo[1]::
J
Junio C Hamano 已提交
406 407 408
	Extracts patch and authorship information from a single
	e-mail message, optionally transliterating the commit
	message into utf-8.
409

410
gitlink:git-mailsplit[1]::
J
Junio C Hamano 已提交
411 412
	A stupid program to split UNIX mbox format mailbox into
	individual pieces of e-mail.
413

414
gitlink:git-patch-id[1]::
415
	Compute unique ID for a patch.
416

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

420
gitlink:git-request-pull[1]::
J
Junio C Hamano 已提交
421
	git-request-pull.
J
Junio C Hamano 已提交
422

423
gitlink:git-rev-parse[1]::
J
Junio C Hamano 已提交
424 425
	Pick out and massage parameters.

426
gitlink:git-send-email[1]::
427
	Send patch e-mails out of "format-patch --mbox" output.
428

429
gitlink:git-symbolic-ref[1]::
430 431
	Read and modify symbolic refs.

432
gitlink:git-stripspace[1]::
J
Junio C Hamano 已提交
433
	Filter out empty lines.
434 435


J
Junio C Hamano 已提交
436 437
Commands not yet documented
---------------------------
438

439
gitlink:gitk[1]::
J
Junio C Hamano 已提交
440
	The gitk repository browser.
441 442


J
Junio C Hamano 已提交
443 444 445
Configuration Mechanism
-----------------------

J
Junio C Hamano 已提交
446
Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
J
Junio C Hamano 已提交
447 448 449 450 451 452
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 已提交
453
# A '#' or ';' character indicates a comment.
J
Junio C Hamano 已提交
454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471
#

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


472
Identifier Terminology
473 474
----------------------
<object>::
J
Junio C Hamano 已提交
475
	Indicates the object name for any type of object.
476 477

<blob>::
J
Junio C Hamano 已提交
478
	Indicates a blob object name.
479 480

<tree>::
J
Junio C Hamano 已提交
481
	Indicates a tree object name.
482 483

<commit>::
J
Junio C Hamano 已提交
484
	Indicates a commit object name.
485 486

<tree-ish>::
J
Junio C Hamano 已提交
487
	Indicates a tree, commit or tag object name.  A
488 489 490
	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>.
491 492 493

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

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

500 501
Symbolic Identifiers
--------------------
502
Any git command accepting any <object> can also use the following
503
symbolic notation:
504 505

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

509
<tag>::
J
Junio C Hamano 已提交
510 511 512
	a valid tag 'name'
	(i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).

513
<head>::
J
Junio C Hamano 已提交
514 515 516
	a valid head 'name'
	(i.e. the contents of `$GIT_DIR/refs/heads/<head>`).

517
<snap>::
J
Junio C Hamano 已提交
518 519
	a valid snapshot 'name'
	(i.e. the contents of `$GIT_DIR/refs/snap/<snap>`).
520 521 522 523 524


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

J
Junio C Hamano 已提交
525
Please see link:repository-layout.html[repository layout] document.
526 527

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

J
Junio C Hamano 已提交
530

531 532
Terminology
-----------
533
Please see link:glossary.html[glossary] document.
534 535 536 537 538 539


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

540 541 542 543
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 已提交
544
git so take care if using Cogito etc.
545 546 547

'GIT_INDEX_FILE'::
	This environment allows the specification of an alternate
548 549
	index file. If not specified, the default of `$GIT_DIR/index`
	is used.
550 551 552 553 554 555 556 557 558 559

'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
560
	specifies a ":" separated list of git object directories which
561 562 563 564
	can be used to search for git objects. New objects will not be
	written to these directories.

'GIT_DIR'::
J
Junio C Hamano 已提交
565 566 567
	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.
568 569 570 571 572 573 574 575

git Commits
~~~~~~~~~~~
'GIT_AUTHOR_NAME'::
'GIT_AUTHOR_EMAIL'::
'GIT_AUTHOR_DATE'::
'GIT_COMMITTER_NAME'::
'GIT_COMMITTER_EMAIL'::
576
	see gitlink:git-commit-tree[1]
577 578 579

git Diffs
~~~~~~~~~
580 581
'GIT_DIFF_OPTS'::
'GIT_EXTERNAL_DIFF'::
582
	see the "generating patches" section in :
583 584 585
	gitlink:git-diff-index[1];
	gitlink:git-diff-files[1];
	gitlink:git-diff-tree[1]
586

J
Junio C Hamano 已提交
587 588
Discussion[[Discussion]]
------------------------
589
include::README[]
590

591 592
Authors
-------
593 594 595 596
* 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>.
597 598 599

Documentation
--------------
600 601 602
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>.
603 604 605

GIT
---
606
Part of the gitlink:git[7] suite
607