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