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