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