1git(7) 2====== 3v0.99.5, Aug 2005 4 5NAME 6---- 7git - the stupid content tracker 8 9 10SYNOPSIS 11-------- 12'git-<command>' <args> 13 14DESCRIPTION 15----------- 16 17This is reference information for the core git commands. 18 19Before reading this cover to cover, you may want to take a look 20at the link:tutorial.html[tutorial] document. 21 22The <<Discussion>> section below contains much useful definition and 23clarification info - read that first. And of the commands, I suggest 24reading link:git-update-cache.html[git-update-cache] and 25link:git-read-tree.html[git-read-tree] first - I wish I had! 26 27If you are migrating from CVS, link:cvs-migration.html[cvs migration] 28document may be helpful after you finish the tutorial. 29 30After you get the general feel from the tutorial and this 31overview page, you may want to take a look at the 32link:howto-index.html[howto] documents. 33 34 35David Greaves <david@dgreaves.com> 3608/05/05 37 38Updated by Junio C Hamano <junkio@cox.net> on 2005-05-05 to 39reflect recent changes. 40 41Commands Overview 42----------------- 43The git commands can helpfully be split into those that manipulate 44the repository, the cache and the working fileset, those that 45interrogate and compare them, and those that moves objects and 46references between repositories. 47 48In addition, git itself comes with a spartan set of porcelain 49commands. They are usable but are not meant to compete with real 50Porcelains. 51 52There are also some ancillary programs that can be viewed as useful 53aids for using the core commands but which are unlikely to be used by 54SCMs layered over git. 55 56Manipulation commands 57~~~~~~~~~~~~~~~~~~~~~ 58link:git-apply.html[git-apply]:: 59 Reads a "diff -up1" or git generated patch file and 60 applies it to the working tree. 61 62link:git-checkout-cache.html[git-checkout-cache]:: 63 Copy files from the cache to the working directory 64 65link:git-commit-tree.html[git-commit-tree]:: 66 Creates a new commit object 67 68link:git-hash-object.html[git-hash-object]:: 69 Computes the object ID from a file. 70 71link:git-init-db.html[git-init-db]:: 72 Creates an empty git object database 73 74link:git-merge-cache.html[git-merge-cache]:: 75 Runs a merge for files needing merging 76 77link:git-mktag.html[git-mktag]:: 78 Creates a tag object 79 80link:git-pack-objects.html[git-pack-objects]:: 81 Creates a packed archive of objects. 82 83link:git-prune-packed.html[git-prune-packed]:: 84 Remove extra objects that are already in pack files. 85 86link:git-read-tree.html[git-read-tree]:: 87 Reads tree information into the directory cache 88 89link:git-unpack-objects.html[git-unpack-objects]:: 90 Unpacks objects out of a packed archive. 91 92link:git-update-cache.html[git-update-cache]:: 93 Modifies the index or directory cache 94 95link:git-write-tree.html[git-write-tree]:: 96 Creates a tree from the current cache 97 98 99Interrogation commands 100~~~~~~~~~~~~~~~~~~~~~~ 101 102link:git-cat-file.html[git-cat-file]:: 103 Provide content or type information for repository objects 104 105link:git-diff-cache.html[git-diff-cache]:: 106 Compares content and mode of blobs between the cache and repository 107 108link:git-diff-files.html[git-diff-files]:: 109 Compares files in the working tree and the cache 110 111link:git-diff-stages.html[git-diff-stages]:: 112 Compares two "merge stages" in the index file. 113 114link:git-diff-tree.html[git-diff-tree]:: 115 Compares the content and mode of blobs found via two tree objects 116 117link:git-export.html[git-export]:: 118 Exports each commit and a diff against each of its parents 119 120link:git-fsck-cache.html[git-fsck-cache]:: 121 Verifies the connectivity and validity of the objects in the database 122 123link:git-ls-files.html[git-ls-files]:: 124 Information about files in the cache/working directory 125 126link:git-ls-tree.html[git-ls-tree]:: 127 Displays a tree object in human readable form 128 129link:git-merge-base.html[git-merge-base]:: 130 Finds as good a common ancestor as possible for a merge 131 132link:git-rev-list.html[git-rev-list]:: 133 Lists commit objects in reverse chronological order 134 135link:git-rev-tree.html[git-rev-tree]:: 136 Provides the revision tree for one or more commits 137 138link:git-show-index.html[git-show-index]:: 139 Displays contents of a pack idx file. 140 141link:git-tar-tree.html[git-tar-tree]:: 142 Creates a tar archive of the files in the named tree 143 144link:git-unpack-file.html[git-unpack-file]:: 145 Creates a temporary file with a blob's contents 146 147link:git-var.html[git-var]:: 148 Displays a git logical variable 149 150link:git-verify-pack.html[git-verify-pack]:: 151 Validates packed GIT archive files 152 153The interrogate commands may create files - and you can force them to 154touch the working file set - but in general they don't 155 156 157Synching repositories 158~~~~~~~~~~~~~~~~~~~~~ 159 160link:git-clone-pack.html[git-clone-pack]:: 161 Clones a repository into the current repository (engine 162 for ssh and local transport) 163 164link:git-fetch-pack.html[git-fetch-pack]:: 165 Updates from a remote repository. 166 167link:git-http-pull.html[git-http-pull]:: 168 Downloads a remote GIT repository via HTTP 169 170link:git-local-pull.html[git-local-pull]:: 171 Duplicates another GIT repository on a local system 172 173link:git-peek-remote.html[git-peek-remote]:: 174 Lists references on a remote repository using upload-pack protocol. 175 176link:git-receive-pack.html[git-receive-pack]:: 177 Invoked by 'git-send-pack' to receive what is pushed to it. 178 179link:git-send-pack.html[git-send-pack]:: 180 Pushes to a remote repository, intelligently. 181 182link:git-ssh-pull.html[git-ssh-pull]:: 183 Pulls from a remote repository over ssh connection 184 185link:git-ssh-push.html[git-ssh-push]:: 186 Helper "server-side" program used by git-ssh-pull 187 188link:git-update-server-info.html[git-update-server-info]:: 189 Updates auxiliary information on a dumb server to help 190 clients discover references and packs on it. 191 192link:git-upload-pack.html[git-upload-pack]:: 193 Invoked by 'git-clone-pack' and 'git-fetch-pack' to push 194 what are asked for. 195 196 197Porcelain-ish Commands 198---------------------- 199 200link:git-add-script.html[git-add-script]:: 201 Add paths to the index file. 202 203link:git-applymbox.html[git-applymbox]:: 204 Apply patches from a mailbox. 205 206link:git-bisect-script.html[git-bisect-script]:: 207 Find the change that introduced a bug. 208 209link:git-branch-script.html[git-branch-script]:: 210 Create and Show branches. 211 212link:git-cherry-pick-script.html[git-cherry-pick-script]:: 213 Cherry-pick the effect of an existing commit. 214 215link:git-clone-script.html[git-clone-script]:: 216 Clones a repository into a new directory. 217 218link:git-commit-script.html[git-commit-script]:: 219 Record changes to the repository. 220 221link:git-fetch-script.html[git-fetch-script]:: 222 Download from a remote repository via various protocols. 223 224link:git-log-script.html[git-log-script]:: 225 Shows commit logs. 226 227link:git-ls-remote-script.html[git-ls-remote-script]:: 228 Shows references in a remote or local repository. 229 230link:git-octopus-script.html[git-octopus-script]:: 231 Merge more than two commits. 232 233link:git-pull-script.html[git-pull-script]:: 234 Fetch from and merge with a remote repository. 235 236link:git-push-script.html[git-push-script]:: 237 Update remote refs along with associated objects. 238 239link:git-rebase-script.html[git-rebase-script]:: 240 Rebase local commits to new upstream head. 241 242link:git-rename-script.html[git-rename]:: 243 Rename files and directories. 244 245link:git-repack-script.html[git-repack-script]:: 246 Pack unpacked objects in a repository. 247 248link:git-resolve-script.html[git-resolve-script]:: 249 Merge two commits. 250 251link:git-revert-script.html[git-revert-script]:: 252 Revert an existing commit. 253 254link:git-shortlog.html[git-shortlog]:: 255 Summarizes 'git log' output. 256 257link:git-show-branch.html[git-show-branch]:: 258 Show branches and their commits. 259 260link:git-status-script.html[git-status-script]:: 261 Shows the working tree status. 262 263link:git-verify-tag-script.html[git-verify-tag-script]:: 264 Check the GPG signature of tag. 265 266link:git-whatchanged.html[git-whatchanged]:: 267 Shows commit logs and differences they introduce. 268 269 270Ancillary Commands 271------------------ 272Manipulators: 273 274link:git-applypatch.html[git-applypatch]:: 275 Apply one patch extracted from an e-mail. 276 277link:git-convert-cache.html[git-convert-cache]:: 278 Converts old-style GIT repository 279 280link:git-cvsimport-script.html[git-cvsimport-script]:: 281 Salvage your data out of another SCM people love to hate. 282 283link:git-merge-one-file-script.html[git-merge-one-file-script]:: 284 The standard helper program to use with "git-merge-cache" 285 286link:git-prune-script.html[git-prune-script]:: 287 Prunes all unreachable objects from the object database 288 289link:git-relink-script.html[git-relink-script]:: 290 Hardlink common objects in local repositories. 291 292link:git-sh-setup-script.html[git-sh-setup-script]:: 293 Common git shell script setup code. 294 295link:git-tag-script.html[git-tag-script]:: 296 An example script to create a tag object signed with GPG 297 298 299Interrogators: 300 301link:git-cherry.html[git-cherry]:: 302 Find commits not merged upstream. 303 304link:git-count-objects-script.html[git-count-objects-script]:: 305 Count unpacked number of objects and their disk consumption. 306 307link:git-diff-helper.html[git-diff-helper]:: 308 Generates patch format output for git-diff-* 309 310link:git-mailinfo.html[git-mailinfo]:: 311 Extracts patch from a single e-mail message. 312 313link:git-mailsplit.html[git-mailsplit]:: 314 git-mailsplit. 315 316link:git-patch-id.html[git-patch-id]:: 317 Compute unique ID for a patch. 318 319link:git-send-email-script.html[git-send-email]:: 320 Send patch e-mails out of "format-patch --mbox" output. 321 322 323Commands not yet documented 324--------------------------- 325 326link:git-build-rev-cache.html[git-build-rev-cache]:: 327 git-build-rev-cache. 328 329link:git-checkout-script.html[git-checkout-script]:: 330 git-checkout-script. 331 332link:git-clone-dumb-http.html[git-clone-dumb-http]:: 333 git-clone-dumb-http. 334 335link:git-daemon.html[git-daemon]:: 336 git-daemon. 337 338link:git-diff-script.html[git-diff-script]:: 339 git-diff-script. 340 341link:git-format-patch-script.html[git-format-patch-script]:: 342 git-format-patch-script. 343 344link:git-get-tar-commit-id.html[git-get-tar-commit-id]:: 345 git-get-tar-commit-id. 346 347link:git-request-pull-script.html[git-request-pull-script]:: 348 git-request-pull-script. 349 350link:git-reset-script.html[git-reset-script]:: 351 git-reset-script. 352 353link:git-rev-parse.html[git-rev-parse]:: 354 git-rev-parse. 355 356link:git-show-rev-cache.html[git-show-rev-cache]:: 357 git-show-rev-cache. 358 359link:git-stripspace.html[git-stripspace]:: 360 git-stripspace. 361 362link:gitk.html[gitk]:: 363 gitk. 364 365 366Identifier Terminology 367---------------------- 368<object>:: 369 Indicates the sha1 identifier for any type of object 370 371<blob>:: 372 Indicates a blob object sha1 identifier 373 374<tree>:: 375 Indicates a tree object sha1 identifier 376 377<commit>:: 378 Indicates a commit object sha1 identifier 379 380<tree-ish>:: 381 Indicates a tree, commit or tag object sha1 identifier. A 382 command that takes a <tree-ish> argument ultimately wants to 383 operate on a <tree> object but automatically dereferences 384 <commit> and <tag> objects that point at a <tree>. 385 386<type>:: 387 Indicates that an object type is required. 388 Currently one of: blob/tree/commit/tag 389 390<file>:: 391 Indicates a filename - always relative to the root of 392 the tree structure GIT_INDEX_FILE describes. 393 394Symbolic Identifiers 395-------------------- 396Any git command accepting any <object> can also use the following 397symbolic notation: 398 399HEAD:: 400 indicates the head of the repository (ie the contents of 401 `$GIT_DIR/HEAD`) 402<tag>:: 403 a valid tag 'name'+ 404 (ie the contents of `$GIT_DIR/refs/tags/<tag>`) 405<head>:: 406 a valid head 'name'+ 407 (ie the contents of `$GIT_DIR/refs/heads/<head>`) 408<snap>:: 409 a valid snapshot 'name'+ 410 (ie the contents of `$GIT_DIR/refs/snap/<snap>`) 411 412 413File/Directory Structure 414------------------------ 415The git-core manipulates the following areas in the directory: 416 417 .git/ The base (overridden with $GIT_DIR) 418 objects/ The object base (overridden with $GIT_OBJECT_DIRECTORY) 419 ??/ 'First 2 chars of object' directories. 420 pack/ Packed archives. 421 422 refs/ Directories containing symbolic names for objects 423 (each file contains the hex SHA1 + newline) 424 heads/ Commits which are heads of various sorts 425 tags/ Tags, by the tag name (or some local renaming of it) 426 */ Any other subdirectory of refs/ can be used to store 427 files similar to what are under refs/heads/. 428 HEAD Symlink to refs/heads/<current-branch-name> 429 430Higher level SCMs may provide and manage additional information in the 431GIT_DIR. 432 433Terminology 434----------- 435Please see link:glossary.html[glossary] document. 436 437 438Environment Variables 439--------------------- 440Various git commands use the following environment variables: 441 442The git Repository 443~~~~~~~~~~~~~~~~~~ 444These environment variables apply to 'all' core git commands. Nb: it 445is worth noting that they may be used/overridden by SCMS sitting above 446git so take care if using Cogito etc 447 448'GIT_INDEX_FILE':: 449 This environment allows the specification of an alternate 450 cache/index file. If not specified, the default of 451 `$GIT_DIR/index` is used. 452 453'GIT_OBJECT_DIRECTORY':: 454 If the object storage directory is specified via this 455 environment variable then the sha1 directories are created 456 underneath - otherwise the default `$GIT_DIR/objects` 457 directory is used. 458 459'GIT_ALTERNATE_OBJECT_DIRECTORIES':: 460 Due to the immutable nature of git objects, old objects can be 461 archived into shared, read-only directories. This variable 462 specifies a ":" separated list of git object directories which 463 can be used to search for git objects. New objects will not be 464 written to these directories. 465 466'GIT_DIR':: 467 If the 'GIT_DIR' environment variable is set then it specifies 468 a path to use instead of `./.git` for the base of the 469 repository. 470 471git Commits 472~~~~~~~~~~~ 473'GIT_AUTHOR_NAME':: 474'GIT_AUTHOR_EMAIL':: 475'GIT_AUTHOR_DATE':: 476'GIT_COMMITTER_NAME':: 477'GIT_COMMITTER_EMAIL':: 478 see link:git-commit-tree.html[git-commit-tree] 479 480git Diffs 481~~~~~~~~~ 482'GIT_DIFF_OPTS':: 483'GIT_EXTERNAL_DIFF':: 484 see the "generating patches" section in : 485 link:git-diff-cache.html[git-diff-cache]; 486 link:git-diff-files.html[git-diff-files]; 487 link:git-diff-tree.html[git-diff-tree] 488 489Discussion[[Discussion]] 490------------------------ 491include::../README[] 492 493Author 494------ 495Written by Linus Torvalds <torvalds@osdl.org> and the git-list <git@vger.kernel.org>. 496 497Documentation 498-------------- 499Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. 500 501GIT 502--- 503Part of the link:git.html[git] suite 504