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