1git(7) 2====== 3 4NAME 5---- 6git - the stupid content tracker 7 8 9SYNOPSIS 10-------- 11'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [--help] COMMAND [ARGS] 12 13DESCRIPTION 14----------- 15'git' is both a program and a directory content tracker system. 16The program 'git' is just a wrapper to reach the core git programs 17(or a potty if you like, as it's not exactly porcelain but still 18brings your stuff to the plumbing). 19 20OPTIONS 21------- 22--version:: 23 prints the git suite version that the 'git' program came from. 24 25--help:: 26 prints the synopsis and a list of available commands. 27 If a git command is named this option will bring up the 28 man-page for that command. 29 30--exec-path:: 31 path to wherever your core git programs are installed. 32 This can also be controlled by setting the GIT_EXEC_PATH 33 environment variable. If no path is given 'git' will print 34 the current setting and then exit. 35 36 37NOT LEARNING CORE GIT COMMANDS 38------------------------------ 39 40This manual is intended to give complete background information 41and internal workings of git, which may be too much for most 42people. The <<Discussion>> section below contains much useful 43definition and clarification - read that first. 44 45If you are interested in using git to manage (version control) 46projects, use link:tutorial.html[The Tutorial] to get you started, 47and then link:everyday.html[Everyday GIT] as a guide to the 48minimum set of commands you need to know for day-to-day work. 49Most likely, that will get you started, and you can go a long 50way without knowing the low level details too much. 51 52The link:core-tutorial.html[Core tutorial] document covers how things 53internally work. 54 55If you are migrating from CVS, link:cvs-migration.html[cvs 56migration] document may be helpful after you finish the 57tutorial. 58 59After you get the general feel from the tutorial and this 60overview page, you may want to take a look at the 61link:howto-index.html[howto] documents. 62 63 64CORE GIT COMMANDS 65----------------- 66 67If you are writing your own Porcelain, you need to be familiar 68with most of the low level commands --- I suggest starting from 69gitlink:git-update-index[1] and gitlink:git-read-tree[1]. 70 71 72Commands Overview 73----------------- 74The git commands can helpfully be split into those that manipulate 75the repository, the index and the files in the working tree, those that 76interrogate and compare them, and those that moves objects and 77references between repositories. 78 79In addition, git itself comes with a spartan set of porcelain 80commands. They are usable but are not meant to compete with real 81Porcelains. 82 83There are also some ancillary programs that can be viewed as useful 84aids for using the core commands but which are unlikely to be used by 85SCMs layered over git. 86 87Manipulation commands 88~~~~~~~~~~~~~~~~~~~~~ 89gitlink:git-apply[1]:: 90 Reads a "diff -up1" or git generated patch file and 91 applies it to the working tree. 92 93gitlink:git-checkout-index[1]:: 94 Copy files from the index to the working tree. 95 96gitlink:git-commit-tree[1]:: 97 Creates a new commit object. 98 99gitlink:git-hash-object[1]:: 100 Computes the object ID from a file. 101 102gitlink:git-index-pack[1]:: 103 Build pack idx file for an existing packed archive. 104 105gitlink:git-init-db[1]:: 106 Creates an empty git object database, or reinitialize an 107 existing one. 108 109gitlink:git-merge-index[1]:: 110 Runs a merge for files needing merging. 111 112gitlink:git-mktag[1]:: 113 Creates a tag object. 114 115gitlink:git-pack-objects[1]:: 116 Creates a packed archive of objects. 117 118gitlink:git-prune-packed[1]:: 119 Remove extra objects that are already in pack files. 120 121gitlink:git-read-tree[1]:: 122 Reads tree information into the index. 123 124gitlink:git-repo-config[1]:: 125 Get and set options in .git/config. 126 127gitlink:git-unpack-objects[1]:: 128 Unpacks objects out of a packed archive. 129 130gitlink:git-update-index[1]:: 131 Registers files in the working tree to the index. 132 133gitlink:git-write-tree[1]:: 134 Creates a tree from the index. 135 136 137Interrogation commands 138~~~~~~~~~~~~~~~~~~~~~~ 139 140gitlink:git-cat-file[1]:: 141 Provide content or type/size information for repository objects. 142 143gitlink:git-describe[1]:: 144 Show the most recent tag that is reachable from a commit. 145 146gitlink:git-diff-index[1]:: 147 Compares content and mode of blobs between the index and repository. 148 149gitlink:git-diff-files[1]:: 150 Compares files in the working tree and the index. 151 152gitlink:git-diff-stages[1]:: 153 Compares two "merge stages" in the index. 154 155gitlink:git-diff-tree[1]:: 156 Compares the content and mode of blobs found via two tree objects. 157 158gitlink:git-fsck-objects[1]:: 159 Verifies the connectivity and validity of the objects in the database. 160 161gitlink:git-ls-files[1]:: 162 Information about files in the index and the working tree. 163 164gitlink:git-ls-tree[1]:: 165 Displays a tree object in human readable form. 166 167gitlink:git-merge-base[1]:: 168 Finds as good common ancestors as possible for a merge. 169 170gitlink:git-name-rev[1]:: 171 Find symbolic names for given revs. 172 173gitlink:git-pack-redundant[1]:: 174 Find redundant pack files. 175 176gitlink:git-rev-list[1]:: 177 Lists commit objects in reverse chronological order. 178 179gitlink:git-show-index[1]:: 180 Displays contents of a pack idx file. 181 182gitlink:git-tar-tree[1]:: 183 Creates a tar archive of the files in the named tree object. 184 185gitlink:git-unpack-file[1]:: 186 Creates a temporary file with a blob's contents. 187 188gitlink:git-var[1]:: 189 Displays a git logical variable. 190 191gitlink:git-verify-pack[1]:: 192 Validates packed git archive files. 193 194In general, the interrogate commands do not touch the files in 195the working tree. 196 197 198Synching repositories 199~~~~~~~~~~~~~~~~~~~~~ 200 201gitlink:git-clone-pack[1]:: 202 Clones a repository into the current repository (engine 203 for ssh and local transport). 204 205gitlink:git-fetch-pack[1]:: 206 Updates from a remote repository (engine for ssh and 207 local transport). 208 209gitlink:git-http-fetch[1]:: 210 Downloads a remote git repository via HTTP by walking 211 commit chain. 212 213gitlink:git-local-fetch[1]:: 214 Duplicates another git repository on a local system by 215 walking commit chain. 216 217gitlink:git-peek-remote[1]:: 218 Lists references on a remote repository using 219 upload-pack protocol (engine for ssh and local 220 transport). 221 222gitlink:git-receive-pack[1]:: 223 Invoked by 'git-send-pack' to receive what is pushed to it. 224 225gitlink:git-send-pack[1]:: 226 Pushes to a remote repository, intelligently. 227 228gitlink:git-http-push[1]:: 229 Push missing objects using HTTP/DAV. 230 231gitlink:git-shell[1]:: 232 Restricted shell for GIT-only SSH access. 233 234gitlink:git-ssh-fetch[1]:: 235 Pulls from a remote repository over ssh connection by 236 walking commit chain. 237 238gitlink:git-ssh-upload[1]:: 239 Helper "server-side" program used by git-ssh-fetch. 240 241gitlink:git-update-server-info[1]:: 242 Updates auxiliary information on a dumb server to help 243 clients discover references and packs on it. 244 245gitlink:git-upload-pack[1]:: 246 Invoked by 'git-clone-pack' and 'git-fetch-pack' to push 247 what are asked for. 248 249 250Porcelain-ish Commands 251---------------------- 252 253gitlink:git-add[1]:: 254 Add paths to the index. 255 256gitlink:git-am[1]:: 257 Apply patches from a mailbox, but cooler. 258 259gitlink:git-applymbox[1]:: 260 Apply patches from a mailbox, original version by Linus. 261 262gitlink:git-bisect[1]:: 263 Find the change that introduced a bug by binary search. 264 265gitlink:git-branch[1]:: 266 Create and Show branches. 267 268gitlink:git-checkout[1]:: 269 Checkout and switch to a branch. 270 271gitlink:git-cherry-pick[1]:: 272 Cherry-pick the effect of an existing commit. 273 274gitlink:git-clone[1]:: 275 Clones a repository into a new directory. 276 277gitlink:git-commit[1]:: 278 Record changes to the repository. 279 280gitlink:git-diff[1]:: 281 Show changes between commits, commit and working tree, etc. 282 283gitlink:git-fetch[1]:: 284 Download from a remote repository via various protocols. 285 286gitlink:git-format-patch[1]:: 287 Prepare patches for e-mail submission. 288 289gitlink:git-grep[1]:: 290 Print lines matching a pattern. 291 292gitlink:git-log[1]:: 293 Shows commit logs. 294 295gitlink:git-ls-remote[1]:: 296 Shows references in a remote or local repository. 297 298gitlink:git-merge[1]:: 299 Grand unified merge driver. 300 301gitlink:git-mv[1]:: 302 Move or rename a file, a directory, or a symlink. 303 304gitlink:git-pull[1]:: 305 Fetch from and merge with a remote repository. 306 307gitlink:git-push[1]:: 308 Update remote refs along with associated objects. 309 310gitlink:git-rebase[1]:: 311 Rebase local commits to the updated upstream head. 312 313gitlink:git-repack[1]:: 314 Pack unpacked objects in a repository. 315 316gitlink:git-reset[1]:: 317 Reset current HEAD to the specified state. 318 319gitlink:git-resolve[1]:: 320 Merge two commits. 321 322gitlink:git-revert[1]:: 323 Revert an existing commit. 324 325gitlink:git-shortlog[1]:: 326 Summarizes 'git log' output. 327 328gitlink:git-show-branch[1]:: 329 Show branches and their commits. 330 331gitlink:git-status[1]:: 332 Shows the working tree status. 333 334gitlink:git-verify-tag[1]:: 335 Check the GPG signature of tag. 336 337gitlink:git-whatchanged[1]:: 338 Shows commit logs and differences they introduce. 339 340 341Ancillary Commands 342------------------ 343Manipulators: 344 345gitlink:git-applypatch[1]:: 346 Apply one patch extracted from an e-mail. 347 348gitlink:git-archimport[1]:: 349 Import an arch repository into git. 350 351gitlink:git-convert-objects[1]:: 352 Converts old-style git repository. 353 354gitlink:git-cvsimport[1]:: 355 Salvage your data out of another SCM people love to hate. 356 357gitlink:git-cvsexportcommit[1]:: 358 Export a single commit to a CVS checkout. 359 360gitlink:git-lost-found[1]:: 361 Recover lost refs that luckily have not yet been pruned. 362 363gitlink:git-merge-one-file[1]:: 364 The standard helper program to use with `git-merge-index`. 365 366gitlink:git-prune[1]:: 367 Prunes all unreachable objects from the object database. 368 369gitlink:git-relink[1]:: 370 Hardlink common objects in local repositories. 371 372gitlink:git-svnimport[1]:: 373 Import a SVN repository into git. 374 375gitlink:git-sh-setup[1]:: 376 Common git shell script setup code. 377 378gitlink:git-symbolic-ref[1]:: 379 Read and modify symbolic refs. 380 381gitlink:git-tag[1]:: 382 An example script to create a tag object signed with GPG. 383 384gitlink:git-update-ref[1]:: 385 Update the object name stored in a ref safely. 386 387 388Interrogators: 389 390gitlink:git-check-ref-format[1]:: 391 Make sure ref name is well formed. 392 393gitlink:git-cherry[1]:: 394 Find commits not merged upstream. 395 396gitlink:git-count-objects[1]:: 397 Count unpacked number of objects and their disk consumption. 398 399gitlink:git-daemon[1]:: 400 A really simple server for git repositories. 401 402gitlink:git-get-tar-commit-id[1]:: 403 Extract commit ID from an archive created using git-tar-tree. 404 405gitlink:git-mailinfo[1]:: 406 Extracts patch and authorship information from a single 407 e-mail message, optionally transliterating the commit 408 message into utf-8. 409 410gitlink:git-mailsplit[1]:: 411 A stupid program to split UNIX mbox format mailbox into 412 individual pieces of e-mail. 413 414gitlink:git-patch-id[1]:: 415 Compute unique ID for a patch. 416 417gitlink:git-parse-remote[1]:: 418 Routines to help parsing `$GIT_DIR/remotes/` files. 419 420gitlink:git-request-pull[1]:: 421 git-request-pull. 422 423gitlink:git-rev-parse[1]:: 424 Pick out and massage parameters. 425 426gitlink:git-send-email[1]:: 427 Send patch e-mails out of "format-patch --mbox" output. 428 429gitlink:git-symbolic-ref[1]:: 430 Read and modify symbolic refs. 431 432gitlink:git-stripspace[1]:: 433 Filter out empty lines. 434 435 436Commands not yet documented 437--------------------------- 438 439gitlink:gitk[1]:: 440 The gitk repository browser. 441 442 443Configuration Mechanism 444----------------------- 445 446Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file 447is used to hold per-repository configuration options. It is a 448simple text file modelled after `.ini` format familiar to some 449people. Here is an example: 450 451------------ 452# 453# A '#' or ';' character indicates a comment. 454# 455 456; core variables 457[core] 458 ; Don't trust file modes 459 filemode = false 460 461; user identity 462[user] 463 name = "Junio C Hamano" 464 email = "junkio@twinsun.com" 465 466------------ 467 468Various commands read from the configuration file and adjust 469their operation accordingly. 470 471 472Identifier Terminology 473---------------------- 474<object>:: 475 Indicates the object name for any type of object. 476 477<blob>:: 478 Indicates a blob object name. 479 480<tree>:: 481 Indicates a tree object name. 482 483<commit>:: 484 Indicates a commit object name. 485 486<tree-ish>:: 487 Indicates a tree, commit or tag object name. A 488 command that takes a <tree-ish> argument ultimately wants to 489 operate on a <tree> object but automatically dereferences 490 <commit> and <tag> objects that point at a <tree>. 491 492<type>:: 493 Indicates that an object type is required. 494 Currently one of: `blob`, `tree`, `commit`, or `tag`. 495 496<file>:: 497 Indicates a filename - almost always relative to the 498 root of the tree structure `GIT_INDEX_FILE` describes. 499 500Symbolic Identifiers 501-------------------- 502Any git command accepting any <object> can also use the following 503symbolic notation: 504 505HEAD:: 506 indicates the head of the current branch (i.e. the 507 contents of `$GIT_DIR/HEAD`). 508 509<tag>:: 510 a valid tag 'name' 511 (i.e. the contents of `$GIT_DIR/refs/tags/<tag>`). 512 513<head>:: 514 a valid head 'name' 515 (i.e. the contents of `$GIT_DIR/refs/heads/<head>`). 516 517<snap>:: 518 a valid snapshot 'name' 519 (i.e. the contents of `$GIT_DIR/refs/snap/<snap>`). 520 521 522File/Directory Structure 523------------------------ 524 525Please see link:repository-layout.html[repository layout] document. 526 527Higher level SCMs may provide and manage additional information in the 528`$GIT_DIR`. 529 530 531Terminology 532----------- 533Please see link:glossary.html[glossary] document. 534 535 536Environment Variables 537--------------------- 538Various git commands use the following environment variables: 539 540The git Repository 541~~~~~~~~~~~~~~~~~~ 542These environment variables apply to 'all' core git commands. Nb: it 543is worth noting that they may be used/overridden by SCMS sitting above 544git so take care if using Cogito etc. 545 546'GIT_INDEX_FILE':: 547 This environment allows the specification of an alternate 548 index file. If not specified, the default of `$GIT_DIR/index` 549 is used. 550 551'GIT_OBJECT_DIRECTORY':: 552 If the object storage directory is specified via this 553 environment variable then the sha1 directories are created 554 underneath - otherwise the default `$GIT_DIR/objects` 555 directory is used. 556 557'GIT_ALTERNATE_OBJECT_DIRECTORIES':: 558 Due to the immutable nature of git objects, old objects can be 559 archived into shared, read-only directories. This variable 560 specifies a ":" separated list of git object directories which 561 can be used to search for git objects. New objects will not be 562 written to these directories. 563 564'GIT_DIR':: 565 If the 'GIT_DIR' environment variable is set then it 566 specifies a path to use instead of the default `.git` 567 for the base of the repository. 568 569git Commits 570~~~~~~~~~~~ 571'GIT_AUTHOR_NAME':: 572'GIT_AUTHOR_EMAIL':: 573'GIT_AUTHOR_DATE':: 574'GIT_COMMITTER_NAME':: 575'GIT_COMMITTER_EMAIL':: 576 see gitlink:git-commit-tree[1] 577 578git Diffs 579~~~~~~~~~ 580'GIT_DIFF_OPTS':: 581'GIT_EXTERNAL_DIFF':: 582 see the "generating patches" section in : 583 gitlink:git-diff-index[1]; 584 gitlink:git-diff-files[1]; 585 gitlink:git-diff-tree[1] 586 587Discussion[[Discussion]] 588------------------------ 589include::README[] 590 591Authors 592------- 593* git's founding father is Linus Torvalds <torvalds@osdl.org>. 594* The current git nurse is Junio C Hamano <junkio@cox.net>. 595* The git potty was written by Andres Ericsson <ae@op5.se>. 596* General upbringing is handled by the git-list <git@vger.kernel.org>. 597 598Documentation 599-------------- 600The documentation for git suite was started by David Greaves 601<david@dgreaves.com>, and later enhanced greatly by the 602contributors on the git-list <git@vger.kernel.org>. 603 604GIT 605--- 606Part of the gitlink:git[7] suite 607