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