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