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 170 171Ancilliary Commands 172------------------- 173Manipulators: 174 175link:git-apply-patch-script.html[git-apply-patch-script]:: 176 Sample script to apply the diffs from git-diff-* 177 178link:git-convert-cache.html[git-convert-cache]:: 179 Converts old-style GIT repository 180 181link:git-merge-one-file-script.html[git-merge-one-file-script]:: 182 The standard helper program to use with "git-merge-cache" 183 184link:git-prune-script.html[git-prune-script]:: 185 Prunes all unreachable objects from the object database 186 187link:git-resolve-script.html[git-resolve-script]:: 188 Script used to merge two trees 189 190link:git-tag-script.html[git-tag-script]:: 191 An example script to create a tag object signed with GPG 192 193 194Interogators: 195 196link:git-diff-helper.html[git-diff-helper]:: 197 Generates patch format output for git-diff-* 198 199link:git-ssh-push.html[git-ssh-push]:: 200 Helper "server-side" program used by git-ssh-pull 201 202 203 204Identifier Terminology 205---------------------- 206<object>:: 207 Indicates the sha1 identifier for any type of object 208 209<blob>:: 210 Indicates a blob object sha1 identifier 211 212<tree>:: 213 Indicates a tree object sha1 identifier 214 215<commit>:: 216 Indicates a commit object sha1 identifier 217 218<tree-ish>:: 219 Indicates a tree, commit or tag object sha1 identifier. A 220 command that takes a <tree-ish> argument ultimately wants to 221 operate on a <tree> object but automatically dereferences 222 <commit> and <tag> objects that point at a <tree>. 223 224<type>:: 225 Indicates that an object type is required. 226 Currently one of: blob/tree/commit/tag 227 228<file>:: 229 Indicates a filename - always relative to the root of 230 the tree structure GIT_INDEX_FILE describes. 231 232Symbolic Identifiers 233-------------------- 234Any git comand accepting any <object> can also use the following 235symbolic notation: 236 237HEAD:: 238 indicates the head of the repository (ie the contents of 239 `$GIT_DIR/HEAD`) 240<tag>:: 241 a valid tag 'name'+ 242 (ie the contents of `$GIT_DIR/refs/tags/<tag>`) 243<head>:: 244 a valid head 'name'+ 245 (ie the contents of `$GIT_DIR/refs/heads/<head>`) 246<snap>:: 247 a valid snapshot 'name'+ 248 (ie the contents of `$GIT_DIR/refs/snap/<snap>`) 249 250 251File/Directory Structure 252------------------------ 253The git-core manipulates the following areas in the directory: 254 255 .git/ The base (overridden with $GIT_DIR) 256 objects/ The object base (overridden with $GIT_OBJECT_DIRECTORY) 257 ??/ 'First 2 chars of object' directories. 258 pack/ Packed archives. 259 260 refs/ Directories containing symbolic names for objects 261 (each file contains the hex SHA1 + newline) 262 heads/ Commits which are heads of various sorts 263 tags/ Tags, by the tag name (or some local renaming of it) 264 */ Any other subdirectory of refs/ can be used to store 265 files similar to what are under refs/heads/. 266 HEAD Symlink to refs/heads/<current-branch-name> 267 268Higher level SCMs may provide and manage additional information in the 269GIT_DIR. 270 271Terminology 272----------- 273Each line contains terms which you may see used interchangeably 274 275 object database, .git directory 276 directory cache, index 277 id, sha1, sha1-id, sha1 hash 278 type, tag 279 280 281Environment Variables 282--------------------- 283Various git commands use the following environment variables: 284 285The git Repository 286~~~~~~~~~~~~~~~~~~ 287These environment variables apply to 'all' core git commands. Nb: it 288is worth noting that they may be used/overridden by SCMS sitting above 289git so take care if using Cogito etc 290 291'GIT_INDEX_FILE':: 292 This environment allows the specification of an alternate 293 cache/index file. If not specified, the default of 294 `$GIT_DIR/index` is used. 295 296'GIT_OBJECT_DIRECTORY':: 297 If the object storage directory is specified via this 298 environment variable then the sha1 directories are created 299 underneath - otherwise the default `$GIT_DIR/objects` 300 directory is used. 301 302'GIT_ALTERNATE_OBJECT_DIRECTORIES':: 303 Due to the immutable nature of git objects, old objects can be 304 archived into shared, read-only directories. This variable 305 specifies a ":" seperated list of git object directories which 306 can be used to search for git objects. New objects will not be 307 written to these directories. 308 309'GIT_DIR':: 310 If the 'GIT_DIR' environment variable is set then it specifies 311 a path to use instead of `./.git` for the base of the 312 repository. 313 314git Commits 315~~~~~~~~~~~ 316'GIT_AUTHOR_NAME':: 317'GIT_AUTHOR_EMAIL':: 318'GIT_AUTHOR_DATE':: 319'GIT_COMMITTER_NAME':: 320'GIT_COMMITTER_EMAIL':: 321 see link:git-commit-tree.html[git-commit-tree] 322 323git Diffs 324~~~~~~~~~ 325'GIT_DIFF_OPTS':: 326'GIT_EXTERNAL_DIFF':: 327 see the "generating patches" section in : 328 link:git-diff-cache.html[git-diff-cache]; 329 link:git-diff-files.html[git-diff-files]; 330 link:git-diff-tree.html[git-diff-tree] 331 332Discussion 333---------- 334include::../README[] 335 336Author 337------ 338Written by Linus Torvalds <torvalds@osdl.org> and the git-list <git@vger.kernel.org>. 339 340Documentation 341-------------- 342Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. 343 344GIT 345--- 346Part of the link:git.html[git] suite 347