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