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