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