1git(7) 2====== 3May 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 19The Discussion section below contains much useful definition and 20clarification info - read that first. And of the commands, I suggest 21reading link:git-update-cache.html[git-update-cache] and 22link:git-read-tree.html[git-read-tree] first - I wish I had! 23 24David Greaves <david@dgreaves.com> 2508/05/05 26 27Updated by Junio C Hamano <junkio@cox.net> on 2005-05-05 to 28reflect recent changes. 29 30Commands Overview 31----------------- 32The git commands can helpfully be split into those that manipulate 33the repository, the cache and the working fileset, those that 34interrogate and compare them, and those that moves objects and 35references between repositories. 36 37In addition, git itself comes with a spartan set of porcelain 38commands. They are usable but are not meant to compete with real 39Porcelains. 40 41There are also some ancilliary programs that can be viewed as useful 42aids for using the core commands but which are unlikely to be used by 43SCMs layered over git. 44 45Manipulation commands 46~~~~~~~~~~~~~~~~~~~~~ 47link:git-checkout-cache.html[git-checkout-cache]:: 48 Copy files from the cache to the working directory 49 50link:git-commit-tree.html[git-commit-tree]:: 51 Creates a new commit object 52 53link:git-init-db.html[git-init-db]:: 54 Creates an empty git object database 55 56link:git-merge-base.html[git-merge-base]:: 57 Finds as good a common ancestor as possible for a merge 58 59link:git-mktag.html[git-mktag]:: 60 Creates a tag object 61 62link:git-read-tree.html[git-read-tree]:: 63 Reads tree information into the directory cache 64 65link:git-update-cache.html[git-update-cache]:: 66 Modifies the index or directory cache 67 68link:git-hash-object.html[git-hash-object]:: 69 Computes the object ID from a file. 70 71link:git-write-tree.html[git-write-tree]:: 72 Creates a tree from the current cache 73 74Interrogation commands 75~~~~~~~~~~~~~~~~~~~~~~ 76link:git-cat-file.html[git-cat-file]:: 77 Provide content or type information for repository objects 78 79link:git-diff-cache.html[git-diff-cache]:: 80 Compares content and mode of blobs between the cache and repository 81 82link:git-diff-files.html[git-diff-files]:: 83 Compares files in the working tree and the cache 84 85link:git-diff-tree.html[git-diff-tree]:: 86 Compares the content and mode of blobs found via two tree objects 87 88link:git-export.html[git-export]:: 89 Exports each commit and a diff against each of its parents 90 91link:git-fsck-cache.html[git-fsck-cache]:: 92 Verifies the connectivity and validity of the objects in the database 93 94link:git-ls-files.html[git-ls-files]:: 95 Information about files in the cache/working directory 96 97link:git-ls-tree.html[git-ls-tree]:: 98 Displays a tree object in human readable form 99 100link:git-merge-cache.html[git-merge-cache]:: 101 Runs a merge for files needing merging 102 103link:git-rev-list.html[git-rev-list]:: 104 Lists commit objects in reverse chronological order 105 106link:git-rev-tree.html[git-rev-tree]:: 107 Provides the revision tree for one or more commits 108 109link:git-tar-tree.html[git-tar-tree]:: 110 Creates a tar archive of the files in the named tree 111 112link:git-unpack-file.html[git-unpack-file]:: 113 Creates a temporary file with a blob's contents 114 115link:git-var.html[git-var]:: 116 Displays a git logical variable 117 118link:git-verify-pack.html[git-verify-pack]:: 119 Validates packed GIT archive files 120 121The interrogate commands may create files - and you can force them to 122touch the working file set - but in general they don't 123 124 125Synching repositories 126~~~~~~~~~~~~~~~~~~~~~ 127 128link:git-clone-script.html[git-clone-script]:: 129 Clones a repository into the current repository (user interface) 130 131link:git-clone-pack.html[git-clone-pack]:: 132 Clones a repository into the current repository (engine 133 for ssh and local transport) 134 135link:git-http-pull.html[git-http-pull]:: 136 Downloads a remote GIT repository via HTTP 137 138link:git-local-pull.html[git-local-pull]:: 139 Duplicates another GIT repository on a local system 140 141link:git-ssh-pull.html[git-ssh-pull]:: 142 Pulls from a remote repository over ssh connection 143 144link:git-send-pack.html[git-send-pack]:: 145 Pushes to a remote repository, intelligently. 146 147link:git-receive-pack.html[git-receive-pack]:: 148 Invoked by 'git-send-pack' to receive what is pushed to it. 149 150link:git-clone-pack.html[git-clone-pack]:: 151 Clones from a remote repository. 152 153link:git-fetch-pack.html[git-fetch-pack]:: 154 Updates from a remote repository. 155 156link:git-peek-remote.html[git-peek-remote]:: 157 Lists references on a remote repository using upload-pack protocol. 158 159link:git-upload-pack.html[git-upload-pack]:: 160 Invoked by 'git-clone-pack' and 'git-fetch-pack' to push 161 what are asked for. 162 163link:git-update-server-info.html[git-update-server-info]:: 164 Updates auxiliary information on a dumb server to help 165 clients discover references and packs on it. 166 167 168Porcelainish Commands 169--------------------- 170link:git-fetch-script.html[git-fetch-script]:: 171 Download from a remote repository via various protocols. 172 173link:git-pull-script.html[git-pull-script]:: 174 Fetch from and merge with a remote repository. 175 176link:git-commit-script.html[git-commit-script]:: 177 Record changes to the repository. 178 179 180Ancilliary Commands 181------------------- 182Manipulators: 183 184link:git-apply-patch-script.html[git-apply-patch-script]:: 185 Sample script to apply the diffs from git-diff-* 186 187link:git-convert-cache.html[git-convert-cache]:: 188 Converts old-style GIT repository 189 190link:git-merge-one-file-script.html[git-merge-one-file-script]:: 191 The standard helper program to use with "git-merge-cache" 192 193link:git-prune-script.html[git-prune-script]:: 194 Prunes all unreachable objects from the object database 195 196link:git-resolve-script.html[git-resolve-script]:: 197 Script used to merge two trees 198 199link:git-tag-script.html[git-tag-script]:: 200 An example script to create a tag object signed with GPG 201 202 203Interogators: 204 205link:git-diff-helper.html[git-diff-helper]:: 206 Generates patch format output for git-diff-* 207 208link:git-ssh-push.html[git-ssh-push]:: 209 Helper "server-side" program used by git-ssh-pull 210 211 212 213Identifier Terminology 214---------------------- 215<object>:: 216 Indicates the sha1 identifier for any type of object 217 218<blob>:: 219 Indicates a blob object sha1 identifier 220 221<tree>:: 222 Indicates a tree object sha1 identifier 223 224<commit>:: 225 Indicates a commit object sha1 identifier 226 227<tree-ish>:: 228 Indicates a tree, commit or tag object sha1 identifier. A 229 command that takes a <tree-ish> argument ultimately wants to 230 operate on a <tree> object but automatically dereferences 231 <commit> and <tag> objects that point at a <tree>. 232 233<type>:: 234 Indicates that an object type is required. 235 Currently one of: blob/tree/commit/tag 236 237<file>:: 238 Indicates a filename - always relative to the root of 239 the tree structure GIT_INDEX_FILE describes. 240 241Symbolic Identifiers 242-------------------- 243Any git comand accepting any <object> can also use the following 244symbolic notation: 245 246HEAD:: 247 indicates the head of the repository (ie the contents of 248 `$GIT_DIR/HEAD`) 249<tag>:: 250 a valid tag 'name'+ 251 (ie the contents of `$GIT_DIR/refs/tags/<tag>`) 252<head>:: 253 a valid head 'name'+ 254 (ie the contents of `$GIT_DIR/refs/heads/<head>`) 255<snap>:: 256 a valid snapshot 'name'+ 257 (ie the contents of `$GIT_DIR/refs/snap/<snap>`) 258 259 260File/Directory Structure 261------------------------ 262The git-core manipulates the following areas in the directory: 263 264 .git/ The base (overridden with $GIT_DIR) 265 objects/ The object base (overridden with $GIT_OBJECT_DIRECTORY) 266 ??/ 'First 2 chars of object' directories. 267 pack/ Packed archives. 268 269 refs/ Directories containing symbolic names for objects 270 (each file contains the hex SHA1 + newline) 271 heads/ Commits which are heads of various sorts 272 tags/ Tags, by the tag name (or some local renaming of it) 273 */ Any other subdirectory of refs/ can be used to store 274 files similar to what are under refs/heads/. 275 HEAD Symlink to refs/heads/<current-branch-name> 276 277Higher level SCMs may provide and manage additional information in the 278GIT_DIR. 279 280Terminology 281----------- 282Each line contains terms which you may see used interchangeably 283 284 object database, .git directory 285 directory cache, index 286 id, sha1, sha1-id, sha1 hash 287 type, tag 288 289 290Environment Variables 291--------------------- 292Various git commands use the following environment variables: 293 294The git Repository 295~~~~~~~~~~~~~~~~~~ 296These environment variables apply to 'all' core git commands. Nb: it 297is worth noting that they may be used/overridden by SCMS sitting above 298git so take care if using Cogito etc 299 300'GIT_INDEX_FILE':: 301 This environment allows the specification of an alternate 302 cache/index file. If not specified, the default of 303 `$GIT_DIR/index` is used. 304 305'GIT_OBJECT_DIRECTORY':: 306 If the object storage directory is specified via this 307 environment variable then the sha1 directories are created 308 underneath - otherwise the default `$GIT_DIR/objects` 309 directory is used. 310 311'GIT_ALTERNATE_OBJECT_DIRECTORIES':: 312 Due to the immutable nature of git objects, old objects can be 313 archived into shared, read-only directories. This variable 314 specifies a ":" seperated list of git object directories which 315 can be used to search for git objects. New objects will not be 316 written to these directories. 317 318'GIT_DIR':: 319 If the 'GIT_DIR' environment variable is set then it specifies 320 a path to use instead of `./.git` for the base of the 321 repository. 322 323git Commits 324~~~~~~~~~~~ 325'GIT_AUTHOR_NAME':: 326'GIT_AUTHOR_EMAIL':: 327'GIT_AUTHOR_DATE':: 328'GIT_COMMITTER_NAME':: 329'GIT_COMMITTER_EMAIL':: 330 see link:git-commit-tree.html[git-commit-tree] 331 332git Diffs 333~~~~~~~~~ 334'GIT_DIFF_OPTS':: 335'GIT_EXTERNAL_DIFF':: 336 see the "generating patches" section in : 337 link:git-diff-cache.html[git-diff-cache]; 338 link:git-diff-files.html[git-diff-files]; 339 link:git-diff-tree.html[git-diff-tree] 340 341Discussion 342---------- 343include::../README[] 344 345Author 346------ 347Written by Linus Torvalds <torvalds@osdl.org> and the git-list <git@vger.kernel.org>. 348 349Documentation 350-------------- 351Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. 352 353GIT 354--- 355Part of the link:git.html[git] suite 356