Documentation / git.txton commit Documentation/git-worktree: split technical info from general description (af189b4)
   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
 812'GIT_COMMON_DIR'::
 813        If this variable is set to a path, non-worktree files that are
 814        normally in $GIT_DIR will be taken from this path
 815        instead. Worktree-specific files such as HEAD or index are
 816        taken from $GIT_DIR. See linkgit:gitrepository-layout[5] and
 817        the section 'MULTIPLE CHECKOUT MODE' in linkgit:checkout[1]
 818        details. This variable has lower precedence than other path
 819        variables such as GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY...
 820
 821Git Commits
 822~~~~~~~~~~~
 823'GIT_AUTHOR_NAME'::
 824'GIT_AUTHOR_EMAIL'::
 825'GIT_AUTHOR_DATE'::
 826'GIT_COMMITTER_NAME'::
 827'GIT_COMMITTER_EMAIL'::
 828'GIT_COMMITTER_DATE'::
 829'EMAIL'::
 830        see linkgit:git-commit-tree[1]
 831
 832Git Diffs
 833~~~~~~~~~
 834'GIT_DIFF_OPTS'::
 835        Only valid setting is "--unified=??" or "-u??" to set the
 836        number of context lines shown when a unified diff is created.
 837        This takes precedence over any "-U" or "--unified" option
 838        value passed on the Git diff command line.
 839
 840'GIT_EXTERNAL_DIFF'::
 841        When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
 842        program named by it is called, instead of the diff invocation
 843        described above.  For a path that is added, removed, or modified,
 844        'GIT_EXTERNAL_DIFF' is called with 7 parameters:
 845
 846        path old-file old-hex old-mode new-file new-hex new-mode
 847+
 848where:
 849
 850        <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
 851                         contents of <old|new>,
 852        <old|new>-hex:: are the 40-hexdigit SHA-1 hashes,
 853        <old|new>-mode:: are the octal representation of the file modes.
 854+
 855The file parameters can point at the user's working file
 856(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
 857when a new file is added), or a temporary file (e.g. `old-file` in the
 858index).  'GIT_EXTERNAL_DIFF' should not worry about unlinking the
 859temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
 860+
 861For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
 862parameter, <path>.
 863+
 864For each path 'GIT_EXTERNAL_DIFF' is called, two environment variables,
 865'GIT_DIFF_PATH_COUNTER' and 'GIT_DIFF_PATH_TOTAL' are set.
 866
 867'GIT_DIFF_PATH_COUNTER'::
 868        A 1-based counter incremented by one for every path.
 869
 870'GIT_DIFF_PATH_TOTAL'::
 871        The total number of paths.
 872
 873other
 874~~~~~
 875'GIT_MERGE_VERBOSITY'::
 876        A number controlling the amount of output shown by
 877        the recursive merge strategy.  Overrides merge.verbosity.
 878        See linkgit:git-merge[1]
 879
 880'GIT_PAGER'::
 881        This environment variable overrides `$PAGER`. If it is set
 882        to an empty string or to the value "cat", Git will not launch
 883        a pager.  See also the `core.pager` option in
 884        linkgit:git-config[1].
 885
 886'GIT_EDITOR'::
 887        This environment variable overrides `$EDITOR` and `$VISUAL`.
 888        It is used by several Git commands when, on interactive mode,
 889        an editor is to be launched. See also linkgit:git-var[1]
 890        and the `core.editor` option in linkgit:git-config[1].
 891
 892'GIT_SSH'::
 893        If this environment variable is set then 'git fetch'
 894        and 'git push' will use this command instead
 895        of 'ssh' when they need to connect to a remote system.
 896        The '$GIT_SSH' command will be given exactly two or
 897        four arguments: the 'username@host' (or just 'host')
 898        from the URL and the shell command to execute on that
 899        remote system, optionally preceded by '-p' (literally) and
 900        the 'port' from the URL when it specifies something other
 901        than the default SSH port.
 902+
 903To pass options to the program that you want to list in GIT_SSH
 904you will need to wrap the program and options into a shell script,
 905then set GIT_SSH to refer to the shell script.
 906+
 907Usually it is easier to configure any desired options through your
 908personal `.ssh/config` file.  Please consult your ssh documentation
 909for further details.
 910
 911'GIT_ASKPASS'::
 912        If this environment variable is set, then Git commands which need to
 913        acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
 914        will call this program with a suitable prompt as command-line argument
 915        and read the password from its STDOUT. See also the 'core.askpass'
 916        option in linkgit:git-config[1].
 917
 918'GIT_CONFIG_NOSYSTEM'::
 919        Whether to skip reading settings from the system-wide
 920        `$(prefix)/etc/gitconfig` file.  This environment variable can
 921        be used along with `$HOME` and `$XDG_CONFIG_HOME` to create a
 922        predictable environment for a picky script, or you can set it
 923        temporarily to avoid using a buggy `/etc/gitconfig` file while
 924        waiting for someone with sufficient permissions to fix it.
 925
 926'GIT_FLUSH'::
 927        If this environment variable is set to "1", then commands such
 928        as 'git blame' (in incremental mode), 'git rev-list', 'git log',
 929        'git check-attr' and 'git check-ignore' will
 930        force a flush of the output stream after each record have been
 931        flushed. If this
 932        variable is set to "0", the output of these commands will be done
 933        using completely buffered I/O.   If this environment variable is
 934        not set, Git will choose buffered or record-oriented flushing
 935        based on whether stdout appears to be redirected to a file or not.
 936
 937'GIT_TRACE'::
 938        Enables general trace messages, e.g. alias expansion, built-in
 939        command execution and external command execution.
 940+
 941If this variable is set to "1", "2" or "true" (comparison
 942is case insensitive), trace messages will be printed to
 943stderr.
 944+
 945If the variable is set to an integer value greater than 2
 946and lower than 10 (strictly) then Git will interpret this
 947value as an open file descriptor and will try to write the
 948trace messages into this file descriptor.
 949+
 950Alternatively, if the variable is set to an absolute path
 951(starting with a '/' character), Git will interpret this
 952as a file path and will try to write the trace messages
 953into it.
 954+
 955Unsetting the variable, or setting it to empty, "0" or
 956"false" (case insensitive) disables trace messages.
 957
 958'GIT_TRACE_PACK_ACCESS'::
 959        Enables trace messages for all accesses to any packs. For each
 960        access, the pack file name and an offset in the pack is
 961        recorded. This may be helpful for troubleshooting some
 962        pack-related performance problems.
 963        See 'GIT_TRACE' for available trace output options.
 964
 965'GIT_TRACE_PACKET'::
 966        Enables trace messages for all packets coming in or out of a
 967        given program. This can help with debugging object negotiation
 968        or other protocol issues. Tracing is turned off at a packet
 969        starting with "PACK".
 970        See 'GIT_TRACE' for available trace output options.
 971
 972'GIT_TRACE_PERFORMANCE'::
 973        Enables performance related trace messages, e.g. total execution
 974        time of each Git command.
 975        See 'GIT_TRACE' for available trace output options.
 976
 977'GIT_TRACE_SETUP'::
 978        Enables trace messages printing the .git, working tree and current
 979        working directory after Git has completed its setup phase.
 980        See 'GIT_TRACE' for available trace output options.
 981
 982'GIT_TRACE_SHALLOW'::
 983        Enables trace messages that can help debugging fetching /
 984        cloning of shallow repositories.
 985        See 'GIT_TRACE' for available trace output options.
 986
 987GIT_LITERAL_PATHSPECS::
 988        Setting this variable to `1` will cause Git to treat all
 989        pathspecs literally, rather than as glob patterns. For example,
 990        running `GIT_LITERAL_PATHSPECS=1 git log -- '*.c'` will search
 991        for commits that touch the path `*.c`, not any paths that the
 992        glob `*.c` matches. You might want this if you are feeding
 993        literal paths to Git (e.g., paths previously given to you by
 994        `git ls-tree`, `--raw` diff output, etc).
 995
 996GIT_GLOB_PATHSPECS::
 997        Setting this variable to `1` will cause Git to treat all
 998        pathspecs as glob patterns (aka "glob" magic).
 999
1000GIT_NOGLOB_PATHSPECS::
1001        Setting this variable to `1` will cause Git to treat all
1002        pathspecs as literal (aka "literal" magic).
1003
1004GIT_ICASE_PATHSPECS::
1005        Setting this variable to `1` will cause Git to treat all
1006        pathspecs as case-insensitive.
1007
1008'GIT_REFLOG_ACTION'::
1009        When a ref is updated, reflog entries are created to keep
1010        track of the reason why the ref was updated (which is
1011        typically the name of the high-level command that updated
1012        the ref), in addition to the old and new values of the ref.
1013        A scripted Porcelain command can use set_reflog_action
1014        helper function in `git-sh-setup` to set its name to this
1015        variable when it is invoked as the top level command by the
1016        end user, to be recorded in the body of the reflog.
1017
1018
1019Discussion[[Discussion]]
1020------------------------
1021
1022More detail on the following is available from the
1023link:user-manual.html#git-concepts[Git concepts chapter of the
1024user-manual] and linkgit:gitcore-tutorial[7].
1025
1026A Git project normally consists of a working directory with a ".git"
1027subdirectory at the top level.  The .git directory contains, among other
1028things, a compressed object database representing the complete history
1029of the project, an "index" file which links that history to the current
1030contents of the working tree, and named pointers into that history such
1031as tags and branch heads.
1032
1033The object database contains objects of three main types: blobs, which
1034hold file data; trees, which point to blobs and other trees to build up
1035directory hierarchies; and commits, which each reference a single tree
1036and some number of parent commits.
1037
1038The commit, equivalent to what other systems call a "changeset" or
1039"version", represents a step in the project's history, and each parent
1040represents an immediately preceding step.  Commits with more than one
1041parent represent merges of independent lines of development.
1042
1043All objects are named by the SHA-1 hash of their contents, normally
1044written as a string of 40 hex digits.  Such names are globally unique.
1045The entire history leading up to a commit can be vouched for by signing
1046just that commit.  A fourth object type, the tag, is provided for this
1047purpose.
1048
1049When first created, objects are stored in individual files, but for
1050efficiency may later be compressed together into "pack files".
1051
1052Named pointers called refs mark interesting points in history.  A ref
1053may contain the SHA-1 name of an object or the name of another ref.  Refs
1054with names beginning `ref/head/` contain the SHA-1 name of the most
1055recent commit (or "head") of a branch under development.  SHA-1 names of
1056tags of interest are stored under `ref/tags/`.  A special ref named
1057`HEAD` contains the name of the currently checked-out branch.
1058
1059The index file is initialized with a list of all paths and, for each
1060path, a blob object and a set of attributes.  The blob object represents
1061the contents of the file as of the head of the current branch.  The
1062attributes (last modified time, size, etc.) are taken from the
1063corresponding file in the working tree.  Subsequent changes to the
1064working tree can be found by comparing these attributes.  The index may
1065be updated with new content, and new commits may be created from the
1066content stored in the index.
1067
1068The index is also capable of storing multiple entries (called "stages")
1069for a given pathname.  These stages are used to hold the various
1070unmerged version of a file when a merge is in progress.
1071
1072FURTHER DOCUMENTATION
1073---------------------
1074
1075See the references in the "description" section to get started
1076using Git.  The following is probably more detail than necessary
1077for a first-time user.
1078
1079The link:user-manual.html#git-concepts[Git concepts chapter of the
1080user-manual] and linkgit:gitcore-tutorial[7] both provide
1081introductions to the underlying Git architecture.
1082
1083See linkgit:gitworkflows[7] for an overview of recommended workflows.
1084
1085See also the link:howto-index.html[howto] documents for some useful
1086examples.
1087
1088The internals are documented in the
1089link:technical/api-index.html[Git API documentation].
1090
1091Users migrating from CVS may also want to
1092read linkgit:gitcvs-migration[7].
1093
1094
1095Authors
1096-------
1097Git was started by Linus Torvalds, and is currently maintained by Junio
1098C Hamano. Numerous contributions have come from the Git mailing list
1099<git@vger.kernel.org>.  http://www.openhub.net/p/git/contributors/summary
1100gives you a more complete list of contributors.
1101
1102If you have a clone of git.git itself, the
1103output of linkgit:git-shortlog[1] and linkgit:git-blame[1] can show you
1104the authors for specific parts of the project.
1105
1106Reporting Bugs
1107--------------
1108
1109Report bugs to the Git mailing list <git@vger.kernel.org> where the
1110development and maintenance is primarily done.  You do not have to be
1111subscribed to the list to send a message there.
1112
1113SEE ALSO
1114--------
1115linkgit:gittutorial[7], linkgit:gittutorial-2[7],
1116linkgit:giteveryday[7], linkgit:gitcvs-migration[7],
1117linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
1118linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
1119linkgit:gitworkflows[7]
1120
1121GIT
1122---
1123Part of the linkgit:git[1] suite