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