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