1git(1) 2====== 3 4NAME 5---- 6git - the stupid content tracker 7 8 9SYNOPSIS 10-------- 11[verse] 12'git' [--version] [--help] [-c <name>=<value>] 13 [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] 14 [-p|--paginate|--no-pager] [--no-replace-objects] [--bare] 15 [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] 16 <command> [<args>] 17 18DESCRIPTION 19----------- 20Git is a fast, scalable, distributed revision control system with an 21unusually rich command set that provides both high-level operations 22and full access to internals. 23 24See linkgit:gittutorial[7] to get started, then see 25link:everyday.html[Everyday Git] for a useful minimum set of 26commands. The link:user-manual.html[Git User's Manual] has a more 27in-depth introduction. 28 29After you mastered the basic concepts, you can come back to this 30page to learn what commands Git offers. You can learn more about 31individual Git commands with "git help command". linkgit:gitcli[7] 32manual page gives you an overview of the command line command syntax. 33 34Formatted and hyperlinked version of the latest Git documentation 35can be viewed at `http://git-htmldocs.googlecode.com/git/git.html`. 36 37ifdef::stalenotes[] 38[NOTE] 39============ 40 41You are reading the documentation for the latest (possibly 42unreleased) version of Git, that is available from 'master' 43branch of the `git.git` repository. 44Documentation for older releases are available here: 45 46* link:v1.8.2.1/git.html[documentation for release 1.8.2.1] 47 48* release notes for 49 link:RelNotes/1.8.2.1.txt[1.8.2.1]. 50 link:RelNotes/1.8.2.txt[1.8.2]. 51 52* link:v1.8.1.6/git.html[documentation for release 1.8.1.6] 53 54* release notes for 55 link:RelNotes/1.8.1.6.txt[1.8.1.6], 56 link:RelNotes/1.8.1.5.txt[1.8.1.5], 57 link:RelNotes/1.8.1.4.txt[1.8.1.4], 58 link:RelNotes/1.8.1.3.txt[1.8.1.3], 59 link:RelNotes/1.8.1.2.txt[1.8.1.2], 60 link:RelNotes/1.8.1.1.txt[1.8.1.1], 61 link:RelNotes/1.8.1.txt[1.8.1]. 62 63* link:v1.8.0.3/git.html[documentation for release 1.8.0.3] 64 65* release notes for 66 link:RelNotes/1.8.0.3.txt[1.8.0.3], 67 link:RelNotes/1.8.0.2.txt[1.8.0.2], 68 link:RelNotes/1.8.0.1.txt[1.8.0.1], 69 link:RelNotes/1.8.0.txt[1.8.0]. 70 71* link:v1.7.12.4/git.html[documentation for release 1.7.12.4] 72 73* release notes for 74 link:RelNotes/1.7.12.4.txt[1.7.12.4], 75 link:RelNotes/1.7.12.3.txt[1.7.12.3], 76 link:RelNotes/1.7.12.2.txt[1.7.12.2], 77 link:RelNotes/1.7.12.1.txt[1.7.12.1], 78 link:RelNotes/1.7.12.txt[1.7.12]. 79 80* link:v1.7.11.7/git.html[documentation for release 1.7.11.7] 81 82* release notes for 83 link:RelNotes/1.7.11.7.txt[1.7.11.7], 84 link:RelNotes/1.7.11.6.txt[1.7.11.6], 85 link:RelNotes/1.7.11.5.txt[1.7.11.5], 86 link:RelNotes/1.7.11.4.txt[1.7.11.4], 87 link:RelNotes/1.7.11.3.txt[1.7.11.3], 88 link:RelNotes/1.7.11.2.txt[1.7.11.2], 89 link:RelNotes/1.7.11.1.txt[1.7.11.1], 90 link:RelNotes/1.7.11.txt[1.7.11]. 91 92* link:v1.7.10.5/git.html[documentation for release 1.7.10.5] 93 94* release notes for 95 link:RelNotes/1.7.10.5.txt[1.7.10.5], 96 link:RelNotes/1.7.10.4.txt[1.7.10.4], 97 link:RelNotes/1.7.10.3.txt[1.7.10.3], 98 link:RelNotes/1.7.10.2.txt[1.7.10.2], 99 link:RelNotes/1.7.10.1.txt[1.7.10.1], 100 link:RelNotes/1.7.10.txt[1.7.10]. 101 102* link:v1.7.9.7/git.html[documentation for release 1.7.9.7] 103 104* release notes for 105 link:RelNotes/1.7.9.7.txt[1.7.9.7], 106 link:RelNotes/1.7.9.6.txt[1.7.9.6], 107 link:RelNotes/1.7.9.5.txt[1.7.9.5], 108 link:RelNotes/1.7.9.4.txt[1.7.9.4], 109 link:RelNotes/1.7.9.3.txt[1.7.9.3], 110 link:RelNotes/1.7.9.2.txt[1.7.9.2], 111 link:RelNotes/1.7.9.1.txt[1.7.9.1], 112 link:RelNotes/1.7.9.txt[1.7.9]. 113 114* link:v1.7.8.6/git.html[documentation for release 1.7.8.6] 115 116* release notes for 117 link:RelNotes/1.7.8.6.txt[1.7.8.6], 118 link:RelNotes/1.7.8.5.txt[1.7.8.5], 119 link:RelNotes/1.7.8.4.txt[1.7.8.4], 120 link:RelNotes/1.7.8.3.txt[1.7.8.3], 121 link:RelNotes/1.7.8.2.txt[1.7.8.2], 122 link:RelNotes/1.7.8.1.txt[1.7.8.1], 123 link:RelNotes/1.7.8.txt[1.7.8]. 124 125* link:v1.7.7.7/git.html[documentation for release 1.7.7.7] 126 127* release notes for 128 link:RelNotes/1.7.7.7.txt[1.7.7.7], 129 link:RelNotes/1.7.7.6.txt[1.7.7.6], 130 link:RelNotes/1.7.7.5.txt[1.7.7.5], 131 link:RelNotes/1.7.7.4.txt[1.7.7.4], 132 link:RelNotes/1.7.7.3.txt[1.7.7.3], 133 link:RelNotes/1.7.7.2.txt[1.7.7.2], 134 link:RelNotes/1.7.7.1.txt[1.7.7.1], 135 link:RelNotes/1.7.7.txt[1.7.7]. 136 137* link:v1.7.6.6/git.html[documentation for release 1.7.6.6] 138 139* release notes for 140 link:RelNotes/1.7.6.6.txt[1.7.6.6], 141 link:RelNotes/1.7.6.5.txt[1.7.6.5], 142 link:RelNotes/1.7.6.4.txt[1.7.6.4], 143 link:RelNotes/1.7.6.3.txt[1.7.6.3], 144 link:RelNotes/1.7.6.2.txt[1.7.6.2], 145 link:RelNotes/1.7.6.1.txt[1.7.6.1], 146 link:RelNotes/1.7.6.txt[1.7.6]. 147 148* link:v1.7.5.4/git.html[documentation for release 1.7.5.4] 149 150* release notes for 151 link:RelNotes/1.7.5.4.txt[1.7.5.4], 152 link:RelNotes/1.7.5.3.txt[1.7.5.3], 153 link:RelNotes/1.7.5.2.txt[1.7.5.2], 154 link:RelNotes/1.7.5.1.txt[1.7.5.1], 155 link:RelNotes/1.7.5.txt[1.7.5]. 156 157* link:v1.7.4.5/git.html[documentation for release 1.7.4.5] 158 159* release notes for 160 link:RelNotes/1.7.4.5.txt[1.7.4.5], 161 link:RelNotes/1.7.4.4.txt[1.7.4.4], 162 link:RelNotes/1.7.4.3.txt[1.7.4.3], 163 link:RelNotes/1.7.4.2.txt[1.7.4.2], 164 link:RelNotes/1.7.4.1.txt[1.7.4.1], 165 link:RelNotes/1.7.4.txt[1.7.4]. 166 167* link:v1.7.3.5/git.html[documentation for release 1.7.3.5] 168 169* release notes for 170 link:RelNotes/1.7.3.5.txt[1.7.3.5], 171 link:RelNotes/1.7.3.4.txt[1.7.3.4], 172 link:RelNotes/1.7.3.3.txt[1.7.3.3], 173 link:RelNotes/1.7.3.2.txt[1.7.3.2], 174 link:RelNotes/1.7.3.1.txt[1.7.3.1], 175 link:RelNotes/1.7.3.txt[1.7.3]. 176 177* link:v1.7.2.5/git.html[documentation for release 1.7.2.5] 178 179* release notes for 180 link:RelNotes/1.7.2.5.txt[1.7.2.5], 181 link:RelNotes/1.7.2.4.txt[1.7.2.4], 182 link:RelNotes/1.7.2.3.txt[1.7.2.3], 183 link:RelNotes/1.7.2.2.txt[1.7.2.2], 184 link:RelNotes/1.7.2.1.txt[1.7.2.1], 185 link:RelNotes/1.7.2.txt[1.7.2]. 186 187* link:v1.7.1.4/git.html[documentation for release 1.7.1.4] 188 189* release notes for 190 link:RelNotes/1.7.1.4.txt[1.7.1.4], 191 link:RelNotes/1.7.1.3.txt[1.7.1.3], 192 link:RelNotes/1.7.1.2.txt[1.7.1.2], 193 link:RelNotes/1.7.1.1.txt[1.7.1.1], 194 link:RelNotes/1.7.1.txt[1.7.1]. 195 196* link:v1.7.0.9/git.html[documentation for release 1.7.0.9] 197 198* release notes for 199 link:RelNotes/1.7.0.9.txt[1.7.0.9], 200 link:RelNotes/1.7.0.8.txt[1.7.0.8], 201 link:RelNotes/1.7.0.7.txt[1.7.0.7], 202 link:RelNotes/1.7.0.6.txt[1.7.0.6], 203 link:RelNotes/1.7.0.5.txt[1.7.0.5], 204 link:RelNotes/1.7.0.4.txt[1.7.0.4], 205 link:RelNotes/1.7.0.3.txt[1.7.0.3], 206 link:RelNotes/1.7.0.2.txt[1.7.0.2], 207 link:RelNotes/1.7.0.1.txt[1.7.0.1], 208 link:RelNotes/1.7.0.txt[1.7.0]. 209 210* link:v1.6.6.3/git.html[documentation for release 1.6.6.3] 211 212* release notes for 213 link:RelNotes/1.6.6.3.txt[1.6.6.3], 214 link:RelNotes/1.6.6.2.txt[1.6.6.2], 215 link:RelNotes/1.6.6.1.txt[1.6.6.1], 216 link:RelNotes/1.6.6.txt[1.6.6]. 217 218* link:v1.6.5.9/git.html[documentation for release 1.6.5.9] 219 220* release notes for 221 link:RelNotes/1.6.5.9.txt[1.6.5.9], 222 link:RelNotes/1.6.5.8.txt[1.6.5.8], 223 link:RelNotes/1.6.5.7.txt[1.6.5.7], 224 link:RelNotes/1.6.5.6.txt[1.6.5.6], 225 link:RelNotes/1.6.5.5.txt[1.6.5.5], 226 link:RelNotes/1.6.5.4.txt[1.6.5.4], 227 link:RelNotes/1.6.5.3.txt[1.6.5.3], 228 link:RelNotes/1.6.5.2.txt[1.6.5.2], 229 link:RelNotes/1.6.5.1.txt[1.6.5.1], 230 link:RelNotes/1.6.5.txt[1.6.5]. 231 232* link:v1.6.4.5/git.html[documentation for release 1.6.4.5] 233 234* release notes for 235 link:RelNotes/1.6.4.5.txt[1.6.4.5], 236 link:RelNotes/1.6.4.4.txt[1.6.4.4], 237 link:RelNotes/1.6.4.3.txt[1.6.4.3], 238 link:RelNotes/1.6.4.2.txt[1.6.4.2], 239 link:RelNotes/1.6.4.1.txt[1.6.4.1], 240 link:RelNotes/1.6.4.txt[1.6.4]. 241 242* link:v1.6.3.4/git.html[documentation for release 1.6.3.4] 243 244* release notes for 245 link:RelNotes/1.6.3.4.txt[1.6.3.4], 246 link:RelNotes/1.6.3.3.txt[1.6.3.3], 247 link:RelNotes/1.6.3.2.txt[1.6.3.2], 248 link:RelNotes/1.6.3.1.txt[1.6.3.1], 249 link:RelNotes/1.6.3.txt[1.6.3]. 250 251* release notes for 252 link:RelNotes/1.6.2.5.txt[1.6.2.5], 253 link:RelNotes/1.6.2.4.txt[1.6.2.4], 254 link:RelNotes/1.6.2.3.txt[1.6.2.3], 255 link:RelNotes/1.6.2.2.txt[1.6.2.2], 256 link:RelNotes/1.6.2.1.txt[1.6.2.1], 257 link:RelNotes/1.6.2.txt[1.6.2]. 258 259* link:v1.6.1.3/git.html[documentation for release 1.6.1.3] 260 261* release notes for 262 link:RelNotes/1.6.1.3.txt[1.6.1.3], 263 link:RelNotes/1.6.1.2.txt[1.6.1.2], 264 link:RelNotes/1.6.1.1.txt[1.6.1.1], 265 link:RelNotes/1.6.1.txt[1.6.1]. 266 267* link:v1.6.0.6/git.html[documentation for release 1.6.0.6] 268 269* release notes for 270 link:RelNotes/1.6.0.6.txt[1.6.0.6], 271 link:RelNotes/1.6.0.5.txt[1.6.0.5], 272 link:RelNotes/1.6.0.4.txt[1.6.0.4], 273 link:RelNotes/1.6.0.3.txt[1.6.0.3], 274 link:RelNotes/1.6.0.2.txt[1.6.0.2], 275 link:RelNotes/1.6.0.1.txt[1.6.0.1], 276 link:RelNotes/1.6.0.txt[1.6.0]. 277 278* link:v1.5.6.6/git.html[documentation for release 1.5.6.6] 279 280* release notes for 281 link:RelNotes/1.5.6.6.txt[1.5.6.6], 282 link:RelNotes/1.5.6.5.txt[1.5.6.5], 283 link:RelNotes/1.5.6.4.txt[1.5.6.4], 284 link:RelNotes/1.5.6.3.txt[1.5.6.3], 285 link:RelNotes/1.5.6.2.txt[1.5.6.2], 286 link:RelNotes/1.5.6.1.txt[1.5.6.1], 287 link:RelNotes/1.5.6.txt[1.5.6]. 288 289* link:v1.5.5.6/git.html[documentation for release 1.5.5.6] 290 291* release notes for 292 link:RelNotes/1.5.5.6.txt[1.5.5.6], 293 link:RelNotes/1.5.5.5.txt[1.5.5.5], 294 link:RelNotes/1.5.5.4.txt[1.5.5.4], 295 link:RelNotes/1.5.5.3.txt[1.5.5.3], 296 link:RelNotes/1.5.5.2.txt[1.5.5.2], 297 link:RelNotes/1.5.5.1.txt[1.5.5.1], 298 link:RelNotes/1.5.5.txt[1.5.5]. 299 300* link:v1.5.4.7/git.html[documentation for release 1.5.4.7] 301 302* release notes for 303 link:RelNotes/1.5.4.7.txt[1.5.4.7], 304 link:RelNotes/1.5.4.6.txt[1.5.4.6], 305 link:RelNotes/1.5.4.5.txt[1.5.4.5], 306 link:RelNotes/1.5.4.4.txt[1.5.4.4], 307 link:RelNotes/1.5.4.3.txt[1.5.4.3], 308 link:RelNotes/1.5.4.2.txt[1.5.4.2], 309 link:RelNotes/1.5.4.1.txt[1.5.4.1], 310 link:RelNotes/1.5.4.txt[1.5.4]. 311 312* link:v1.5.3.8/git.html[documentation for release 1.5.3.8] 313 314* release notes for 315 link:RelNotes/1.5.3.8.txt[1.5.3.8], 316 link:RelNotes/1.5.3.7.txt[1.5.3.7], 317 link:RelNotes/1.5.3.6.txt[1.5.3.6], 318 link:RelNotes/1.5.3.5.txt[1.5.3.5], 319 link:RelNotes/1.5.3.4.txt[1.5.3.4], 320 link:RelNotes/1.5.3.3.txt[1.5.3.3], 321 link:RelNotes/1.5.3.2.txt[1.5.3.2], 322 link:RelNotes/1.5.3.1.txt[1.5.3.1], 323 link:RelNotes/1.5.3.txt[1.5.3]. 324 325* link:v1.5.2.5/git.html[documentation for release 1.5.2.5] 326 327* release notes for 328 link:RelNotes/1.5.2.5.txt[1.5.2.5], 329 link:RelNotes/1.5.2.4.txt[1.5.2.4], 330 link:RelNotes/1.5.2.3.txt[1.5.2.3], 331 link:RelNotes/1.5.2.2.txt[1.5.2.2], 332 link:RelNotes/1.5.2.1.txt[1.5.2.1], 333 link:RelNotes/1.5.2.txt[1.5.2]. 334 335* link:v1.5.1.6/git.html[documentation for release 1.5.1.6] 336 337* release notes for 338 link:RelNotes/1.5.1.6.txt[1.5.1.6], 339 link:RelNotes/1.5.1.5.txt[1.5.1.5], 340 link:RelNotes/1.5.1.4.txt[1.5.1.4], 341 link:RelNotes/1.5.1.3.txt[1.5.1.3], 342 link:RelNotes/1.5.1.2.txt[1.5.1.2], 343 link:RelNotes/1.5.1.1.txt[1.5.1.1], 344 link:RelNotes/1.5.1.txt[1.5.1]. 345 346* link:v1.5.0.7/git.html[documentation for release 1.5.0.7] 347 348* release notes for 349 link:RelNotes/1.5.0.7.txt[1.5.0.7], 350 link:RelNotes/1.5.0.6.txt[1.5.0.6], 351 link:RelNotes/1.5.0.5.txt[1.5.0.5], 352 link:RelNotes/1.5.0.3.txt[1.5.0.3], 353 link:RelNotes/1.5.0.2.txt[1.5.0.2], 354 link:RelNotes/1.5.0.1.txt[1.5.0.1], 355 link:RelNotes/1.5.0.txt[1.5.0]. 356 357* documentation for release link:v1.4.4.4/git.html[1.4.4.4], 358 link:v1.3.3/git.html[1.3.3], 359 link:v1.2.6/git.html[1.2.6], 360 link:v1.0.13/git.html[1.0.13]. 361 362============ 363 364endif::stalenotes[] 365 366OPTIONS 367------- 368--version:: 369 Prints the Git suite version that the 'git' program came from. 370 371--help:: 372 Prints the synopsis and a list of the most commonly used 373 commands. If the option '--all' or '-a' is given then all 374 available commands are printed. If a Git command is named this 375 option will bring up the manual page for that command. 376+ 377Other options are available to control how the manual page is 378displayed. See linkgit:git-help[1] for more information, 379because `git --help ...` is converted internally into `git 380help ...`. 381 382-c <name>=<value>:: 383 Pass a configuration parameter to the command. The value 384 given will override values from configuration files. 385 The <name> is expected in the same format as listed by 386 'git config' (subkeys separated by dots). 387 388--exec-path[=<path>]:: 389 Path to wherever your core Git programs are installed. 390 This can also be controlled by setting the GIT_EXEC_PATH 391 environment variable. If no path is given, 'git' will print 392 the current setting and then exit. 393 394--html-path:: 395 Print the path, without trailing slash, where Git's HTML 396 documentation is installed and exit. 397 398--man-path:: 399 Print the manpath (see `man(1)`) for the man pages for 400 this version of Git and exit. 401 402--info-path:: 403 Print the path where the Info files documenting this 404 version of Git are installed and exit. 405 406-p:: 407--paginate:: 408 Pipe all output into 'less' (or if set, $PAGER) if standard 409 output is a terminal. This overrides the `pager.<cmd>` 410 configuration options (see the "Configuration Mechanism" section 411 below). 412 413--no-pager:: 414 Do not pipe Git output into a pager. 415 416--git-dir=<path>:: 417 Set the path to the repository. This can also be controlled by 418 setting the GIT_DIR environment variable. It can be an absolute 419 path or relative path to current working directory. 420 421--work-tree=<path>:: 422 Set the path to the working tree. It can be an absolute path 423 or a path relative to the current working directory. 424 This can also be controlled by setting the GIT_WORK_TREE 425 environment variable and the core.worktree configuration 426 variable (see core.worktree in linkgit:git-config[1] for a 427 more detailed discussion). 428 429--namespace=<path>:: 430 Set the Git namespace. See linkgit:gitnamespaces[7] for more 431 details. Equivalent to setting the `GIT_NAMESPACE` environment 432 variable. 433 434--bare:: 435 Treat the repository as a bare repository. If GIT_DIR 436 environment is not set, it is set to the current working 437 directory. 438 439--no-replace-objects:: 440 Do not use replacement refs to replace Git objects. See 441 linkgit:git-replace[1] for more information. 442 443--literal-pathspecs:: 444 Treat pathspecs literally, rather than as glob patterns. This is 445 equivalent to setting the `GIT_LITERAL_PATHSPECS` environment 446 variable to `1`. 447 448 449GIT COMMANDS 450------------ 451 452We divide Git into high level ("porcelain") commands and low level 453("plumbing") commands. 454 455High-level commands (porcelain) 456------------------------------- 457 458We separate the porcelain commands into the main commands and some 459ancillary user utilities. 460 461Main porcelain commands 462~~~~~~~~~~~~~~~~~~~~~~~ 463 464include::cmds-mainporcelain.txt[] 465 466Ancillary Commands 467~~~~~~~~~~~~~~~~~~ 468Manipulators: 469 470include::cmds-ancillarymanipulators.txt[] 471 472Interrogators: 473 474include::cmds-ancillaryinterrogators.txt[] 475 476 477Interacting with Others 478~~~~~~~~~~~~~~~~~~~~~~~ 479 480These commands are to interact with foreign SCM and with other 481people via patch over e-mail. 482 483include::cmds-foreignscminterface.txt[] 484 485 486Low-level commands (plumbing) 487----------------------------- 488 489Although Git includes its 490own porcelain layer, its low-level commands are sufficient to support 491development of alternative porcelains. Developers of such porcelains 492might start by reading about linkgit:git-update-index[1] and 493linkgit:git-read-tree[1]. 494 495The interface (input, output, set of options and the semantics) 496to these low-level commands are meant to be a lot more stable 497than Porcelain level commands, because these commands are 498primarily for scripted use. The interface to Porcelain commands 499on the other hand are subject to change in order to improve the 500end user experience. 501 502The following description divides 503the low-level commands into commands that manipulate objects (in 504the repository, index, and working tree), commands that interrogate and 505compare objects, and commands that move objects and references between 506repositories. 507 508 509Manipulation commands 510~~~~~~~~~~~~~~~~~~~~~ 511 512include::cmds-plumbingmanipulators.txt[] 513 514 515Interrogation commands 516~~~~~~~~~~~~~~~~~~~~~~ 517 518include::cmds-plumbinginterrogators.txt[] 519 520In general, the interrogate commands do not touch the files in 521the working tree. 522 523 524Synching repositories 525~~~~~~~~~~~~~~~~~~~~~ 526 527include::cmds-synchingrepositories.txt[] 528 529The following are helper commands used by the above; end users 530typically do not use them directly. 531 532include::cmds-synchelpers.txt[] 533 534 535Internal helper commands 536~~~~~~~~~~~~~~~~~~~~~~~~ 537 538These are internal helper commands used by other commands; end 539users typically do not use them directly. 540 541include::cmds-purehelpers.txt[] 542 543 544Configuration Mechanism 545----------------------- 546 547Git uses a simple text format to store customizations that are per 548repository and are per user. Such a configuration file may look 549like this: 550 551------------ 552# 553# A '#' or ';' character indicates a comment. 554# 555 556; core variables 557[core] 558 ; Don't trust file modes 559 filemode = false 560 561; user identity 562[user] 563 name = "Junio C Hamano" 564 email = "gitster@pobox.com" 565 566------------ 567 568Various commands read from the configuration file and adjust 569their operation accordingly. See linkgit:git-config[1] for a 570list and more details about the configuration mechanism. 571 572 573Identifier Terminology 574---------------------- 575<object>:: 576 Indicates the object name for any type of object. 577 578<blob>:: 579 Indicates a blob object name. 580 581<tree>:: 582 Indicates a tree object name. 583 584<commit>:: 585 Indicates a commit object name. 586 587<tree-ish>:: 588 Indicates a tree, commit or tag object name. A 589 command that takes a <tree-ish> argument ultimately wants to 590 operate on a <tree> object but automatically dereferences 591 <commit> and <tag> objects that point at a <tree>. 592 593<commit-ish>:: 594 Indicates a commit or tag object name. A 595 command that takes a <commit-ish> argument ultimately wants to 596 operate on a <commit> object but automatically dereferences 597 <tag> objects that point at a <commit>. 598 599<type>:: 600 Indicates that an object type is required. 601 Currently one of: `blob`, `tree`, `commit`, or `tag`. 602 603<file>:: 604 Indicates a filename - almost always relative to the 605 root of the tree structure `GIT_INDEX_FILE` describes. 606 607Symbolic Identifiers 608-------------------- 609Any Git command accepting any <object> can also use the following 610symbolic notation: 611 612HEAD:: 613 indicates the head of the current branch. 614 615<tag>:: 616 a valid tag 'name' 617 (i.e. a `refs/tags/<tag>` reference). 618 619<head>:: 620 a valid head 'name' 621 (i.e. a `refs/heads/<head>` reference). 622 623For a more complete list of ways to spell object names, see 624"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7]. 625 626 627File/Directory Structure 628------------------------ 629 630Please see the linkgit:gitrepository-layout[5] document. 631 632Read linkgit:githooks[5] for more details about each hook. 633 634Higher level SCMs may provide and manage additional information in the 635`$GIT_DIR`. 636 637 638Terminology 639----------- 640Please see linkgit:gitglossary[7]. 641 642 643Environment Variables 644--------------------- 645Various Git commands use the following environment variables: 646 647The Git Repository 648~~~~~~~~~~~~~~~~~~ 649These environment variables apply to 'all' core Git commands. Nb: it 650is worth noting that they may be used/overridden by SCMS sitting above 651Git so take care if using Cogito etc. 652 653'GIT_INDEX_FILE':: 654 This environment allows the specification of an alternate 655 index file. If not specified, the default of `$GIT_DIR/index` 656 is used. 657 658'GIT_OBJECT_DIRECTORY':: 659 If the object storage directory is specified via this 660 environment variable then the sha1 directories are created 661 underneath - otherwise the default `$GIT_DIR/objects` 662 directory is used. 663 664'GIT_ALTERNATE_OBJECT_DIRECTORIES':: 665 Due to the immutable nature of Git objects, old objects can be 666 archived into shared, read-only directories. This variable 667 specifies a ":" separated (on Windows ";" separated) list 668 of Git object directories which can be used to search for Git 669 objects. New objects will not be written to these directories. 670 671'GIT_DIR':: 672 If the 'GIT_DIR' environment variable is set then it 673 specifies a path to use instead of the default `.git` 674 for the base of the repository. 675 The '--git-dir' command-line option also sets this value. 676 677'GIT_WORK_TREE':: 678 Set the path to the working tree. The value will not be 679 used in combination with repositories found automatically in 680 a .git directory (i.e. $GIT_DIR is not set). 681 This can also be controlled by the '--work-tree' command line 682 option and the core.worktree configuration variable. 683 684'GIT_NAMESPACE':: 685 Set the Git namespace; see linkgit:gitnamespaces[7] for details. 686 The '--namespace' command-line option also sets this value. 687 688'GIT_CEILING_DIRECTORIES':: 689 This should be a colon-separated list of absolute paths. If 690 set, it is a list of directories that Git should not chdir up 691 into while looking for a repository directory (useful for 692 excluding slow-loading network directories). It will not 693 exclude the current working directory or a GIT_DIR set on the 694 command line or in the environment. Normally, Git has to read 695 the entries in this list and resolve any symlink that 696 might be present in order to compare them with the current 697 directory. However, if even this access is slow, you 698 can add an empty entry to the list to tell Git that the 699 subsequent entries are not symlinks and needn't be resolved; 700 e.g., 701 'GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink'. 702 703'GIT_DISCOVERY_ACROSS_FILESYSTEM':: 704 When run in a directory that does not have ".git" repository 705 directory, Git tries to find such a directory in the parent 706 directories to find the top of the working tree, but by default it 707 does not cross filesystem boundaries. This environment variable 708 can be set to true to tell Git not to stop at filesystem 709 boundaries. Like 'GIT_CEILING_DIRECTORIES', this will not affect 710 an explicit repository directory set via 'GIT_DIR' or on the 711 command line. 712 713Git Commits 714~~~~~~~~~~~ 715'GIT_AUTHOR_NAME':: 716'GIT_AUTHOR_EMAIL':: 717'GIT_AUTHOR_DATE':: 718'GIT_COMMITTER_NAME':: 719'GIT_COMMITTER_EMAIL':: 720'GIT_COMMITTER_DATE':: 721'EMAIL':: 722 see linkgit:git-commit-tree[1] 723 724Git Diffs 725~~~~~~~~~ 726'GIT_DIFF_OPTS':: 727 Only valid setting is "--unified=??" or "-u??" to set the 728 number of context lines shown when a unified diff is created. 729 This takes precedence over any "-U" or "--unified" option 730 value passed on the Git diff command line. 731 732'GIT_EXTERNAL_DIFF':: 733 When the environment variable 'GIT_EXTERNAL_DIFF' is set, the 734 program named by it is called, instead of the diff invocation 735 described above. For a path that is added, removed, or modified, 736 'GIT_EXTERNAL_DIFF' is called with 7 parameters: 737 738 path old-file old-hex old-mode new-file new-hex new-mode 739+ 740where: 741 742 <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the 743 contents of <old|new>, 744 <old|new>-hex:: are the 40-hexdigit SHA-1 hashes, 745 <old|new>-mode:: are the octal representation of the file modes. 746+ 747The file parameters can point at the user's working file 748(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file` 749when a new file is added), or a temporary file (e.g. `old-file` in the 750index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the 751temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits. 752+ 753For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1 754parameter, <path>. 755 756other 757~~~~~ 758'GIT_MERGE_VERBOSITY':: 759 A number controlling the amount of output shown by 760 the recursive merge strategy. Overrides merge.verbosity. 761 See linkgit:git-merge[1] 762 763'GIT_PAGER':: 764 This environment variable overrides `$PAGER`. If it is set 765 to an empty string or to the value "cat", Git will not launch 766 a pager. See also the `core.pager` option in 767 linkgit:git-config[1]. 768 769'GIT_EDITOR':: 770 This environment variable overrides `$EDITOR` and `$VISUAL`. 771 It is used by several Git commands when, on interactive mode, 772 an editor is to be launched. See also linkgit:git-var[1] 773 and the `core.editor` option in linkgit:git-config[1]. 774 775'GIT_SSH':: 776 If this environment variable is set then 'git fetch' 777 and 'git push' will use this command instead 778 of 'ssh' when they need to connect to a remote system. 779 The '$GIT_SSH' command will be given exactly two or 780 four arguments: the 'username@host' (or just 'host') 781 from the URL and the shell command to execute on that 782 remote system, optionally preceded by '-p' (literally) and 783 the 'port' from the URL when it specifies something other 784 than the default SSH port. 785+ 786To pass options to the program that you want to list in GIT_SSH 787you will need to wrap the program and options into a shell script, 788then set GIT_SSH to refer to the shell script. 789+ 790Usually it is easier to configure any desired options through your 791personal `.ssh/config` file. Please consult your ssh documentation 792for further details. 793 794'GIT_ASKPASS':: 795 If this environment variable is set, then Git commands which need to 796 acquire passwords or passphrases (e.g. for HTTP or IMAP authentication) 797 will call this program with a suitable prompt as command line argument 798 and read the password from its STDOUT. See also the 'core.askpass' 799 option in linkgit:git-config[1]. 800 801'GIT_CONFIG_NOSYSTEM':: 802 Whether to skip reading settings from the system-wide 803 `$(prefix)/etc/gitconfig` file. This environment variable can 804 be used along with `$HOME` and `$XDG_CONFIG_HOME` to create a 805 predictable environment for a picky script, or you can set it 806 temporarily to avoid using a buggy `/etc/gitconfig` file while 807 waiting for someone with sufficient permissions to fix it. 808 809'GIT_FLUSH':: 810 If this environment variable is set to "1", then commands such 811 as 'git blame' (in incremental mode), 'git rev-list', 'git log', 812 and 'git whatchanged' will force a flush of the output stream 813 after each commit-oriented record have been flushed. If this 814 variable is set to "0", the output of these commands will be done 815 using completely buffered I/O. If this environment variable is 816 not set, Git will choose buffered or record-oriented flushing 817 based on whether stdout appears to be redirected to a file or not. 818 819'GIT_TRACE':: 820 If this variable is set to "1", "2" or "true" (comparison 821 is case insensitive), Git will print `trace:` messages on 822 stderr telling about alias expansion, built-in command 823 execution and external command execution. 824 If this variable is set to an integer value greater than 1 825 and lower than 10 (strictly) then Git will interpret this 826 value as an open file descriptor and will try to write the 827 trace messages into this file descriptor. 828 Alternatively, if this variable is set to an absolute path 829 (starting with a '/' character), Git will interpret this 830 as a file path and will try to write the trace messages 831 into it. 832 833GIT_LITERAL_PATHSPECS:: 834 Setting this variable to `1` will cause Git to treat all 835 pathspecs literally, rather than as glob patterns. For example, 836 running `GIT_LITERAL_PATHSPECS=1 git log -- '*.c'` will search 837 for commits that touch the path `*.c`, not any paths that the 838 glob `*.c` matches. You might want this if you are feeding 839 literal paths to Git (e.g., paths previously given to you by 840 `git ls-tree`, `--raw` diff output, etc). 841 842 843Discussion[[Discussion]] 844------------------------ 845 846More detail on the following is available from the 847link:user-manual.html#git-concepts[Git concepts chapter of the 848user-manual] and linkgit:gitcore-tutorial[7]. 849 850A Git project normally consists of a working directory with a ".git" 851subdirectory at the top level. The .git directory contains, among other 852things, a compressed object database representing the complete history 853of the project, an "index" file which links that history to the current 854contents of the working tree, and named pointers into that history such 855as tags and branch heads. 856 857The object database contains objects of three main types: blobs, which 858hold file data; trees, which point to blobs and other trees to build up 859directory hierarchies; and commits, which each reference a single tree 860and some number of parent commits. 861 862The commit, equivalent to what other systems call a "changeset" or 863"version", represents a step in the project's history, and each parent 864represents an immediately preceding step. Commits with more than one 865parent represent merges of independent lines of development. 866 867All objects are named by the SHA-1 hash of their contents, normally 868written as a string of 40 hex digits. Such names are globally unique. 869The entire history leading up to a commit can be vouched for by signing 870just that commit. A fourth object type, the tag, is provided for this 871purpose. 872 873When first created, objects are stored in individual files, but for 874efficiency may later be compressed together into "pack files". 875 876Named pointers called refs mark interesting points in history. A ref 877may contain the SHA-1 name of an object or the name of another ref. Refs 878with names beginning `ref/head/` contain the SHA-1 name of the most 879recent commit (or "head") of a branch under development. SHA-1 names of 880tags of interest are stored under `ref/tags/`. A special ref named 881`HEAD` contains the name of the currently checked-out branch. 882 883The index file is initialized with a list of all paths and, for each 884path, a blob object and a set of attributes. The blob object represents 885the contents of the file as of the head of the current branch. The 886attributes (last modified time, size, etc.) are taken from the 887corresponding file in the working tree. Subsequent changes to the 888working tree can be found by comparing these attributes. The index may 889be updated with new content, and new commits may be created from the 890content stored in the index. 891 892The index is also capable of storing multiple entries (called "stages") 893for a given pathname. These stages are used to hold the various 894unmerged version of a file when a merge is in progress. 895 896FURTHER DOCUMENTATION 897--------------------- 898 899See the references in the "description" section to get started 900using Git. The following is probably more detail than necessary 901for a first-time user. 902 903The link:user-manual.html#git-concepts[Git concepts chapter of the 904user-manual] and linkgit:gitcore-tutorial[7] both provide 905introductions to the underlying Git architecture. 906 907See linkgit:gitworkflows[7] for an overview of recommended workflows. 908 909See also the link:howto-index.html[howto] documents for some useful 910examples. 911 912The internals are documented in the 913link:technical/api-index.html[Git API documentation]. 914 915Users migrating from CVS may also want to 916read linkgit:gitcvs-migration[7]. 917 918 919Authors 920------- 921Git was started by Linus Torvalds, and is currently maintained by Junio 922C Hamano. Numerous contributions have come from the Git mailing list 923<git@vger.kernel.org>. http://www.ohloh.net/p/git/contributors/summary 924gives you a more complete list of contributors. 925 926If you have a clone of git.git itself, the 927output of linkgit:git-shortlog[1] and linkgit:git-blame[1] can show you 928the authors for specific parts of the project. 929 930Reporting Bugs 931-------------- 932 933Report bugs to the Git mailing list <git@vger.kernel.org> where the 934development and maintenance is primarily done. You do not have to be 935subscribed to the list to send a message there. 936 937SEE ALSO 938-------- 939linkgit:gittutorial[7], linkgit:gittutorial-2[7], 940link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7], 941linkgit:gitglossary[7], linkgit:gitcore-tutorial[7], 942linkgit:gitcli[7], link:user-manual.html[The Git User's Manual], 943linkgit:gitworkflows[7] 944 945GIT 946--- 947Part of the linkgit:git[1] suite