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