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