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