6 git - the stupid content tracker
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 [--super-prefix=<path>]
21 Git is a fast, scalable, distributed revision control system with an
22 unusually rich command set that provides both high-level operations
23 and full access to internals.
25 See linkgit:gittutorial[7] to get started, then see
26 linkgit:giteveryday[7] for a useful minimum set of
27 commands. The link:user-manual.html[Git User's Manual] has a more
28 in-depth introduction.
30 After you mastered the basic concepts, you can come back to this
31 page to learn what commands Git offers. You can learn more about
32 individual Git commands with "git help command". linkgit:gitcli[7]
33 manual page gives you an overview of the command-line command syntax.
35 A formatted and hyperlinked copy of the latest Git documentation
36 can be viewed at `https://git.github.io/htmldocs/git.html`.
42 You are reading the documentation for the latest (possibly
43 unreleased) version of Git, that is available from the 'master'
44 branch of the `git.git` repository.
45 Documentation for older releases are available here:
47 * link:v2.10.1/git.html[documentation for release 2.10.1]
50 link:RelNotes/2.10.1.txt[2.10.1],
51 link:RelNotes/2.10.0.txt[2.10].
53 * link:v2.9.3/git.html[documentation for release 2.9.3]
56 link:RelNotes/2.9.3.txt[2.9.3],
57 link:RelNotes/2.9.2.txt[2.9.2],
58 link:RelNotes/2.9.1.txt[2.9.1],
59 link:RelNotes/2.9.0.txt[2.9].
61 * link:v2.8.4/git.html[documentation for release 2.8.4]
64 link:RelNotes/2.8.4.txt[2.8.4],
65 link:RelNotes/2.8.3.txt[2.8.3],
66 link:RelNotes/2.8.2.txt[2.8.2],
67 link:RelNotes/2.8.1.txt[2.8.1],
68 link:RelNotes/2.8.0.txt[2.8].
70 * link:v2.7.3/git.html[documentation for release 2.7.3]
73 link:RelNotes/2.7.3.txt[2.7.3],
74 link:RelNotes/2.7.2.txt[2.7.2],
75 link:RelNotes/2.7.1.txt[2.7.1],
76 link:RelNotes/2.7.0.txt[2.7].
78 * link:v2.6.6/git.html[documentation for release 2.6.6]
81 link:RelNotes/2.6.6.txt[2.6.6],
82 link:RelNotes/2.6.5.txt[2.6.5],
83 link:RelNotes/2.6.4.txt[2.6.4],
84 link:RelNotes/2.6.3.txt[2.6.3],
85 link:RelNotes/2.6.2.txt[2.6.2],
86 link:RelNotes/2.6.1.txt[2.6.1],
87 link:RelNotes/2.6.0.txt[2.6].
89 * link:v2.5.5/git.html[documentation for release 2.5.5]
92 link:RelNotes/2.5.5.txt[2.5.5],
93 link:RelNotes/2.5.4.txt[2.5.4],
94 link:RelNotes/2.5.3.txt[2.5.3],
95 link:RelNotes/2.5.2.txt[2.5.2],
96 link:RelNotes/2.5.1.txt[2.5.1],
97 link:RelNotes/2.5.0.txt[2.5].
99 * link:v2.4.11/git.html[documentation for release 2.4.11]
102 link:RelNotes/2.4.11.txt[2.4.11],
103 link:RelNotes/2.4.10.txt[2.4.10],
104 link:RelNotes/2.4.9.txt[2.4.9],
105 link:RelNotes/2.4.8.txt[2.4.8],
106 link:RelNotes/2.4.7.txt[2.4.7],
107 link:RelNotes/2.4.6.txt[2.4.6],
108 link:RelNotes/2.4.5.txt[2.4.5],
109 link:RelNotes/2.4.4.txt[2.4.4],
110 link:RelNotes/2.4.3.txt[2.4.3],
111 link:RelNotes/2.4.2.txt[2.4.2],
112 link:RelNotes/2.4.1.txt[2.4.1],
113 link:RelNotes/2.4.0.txt[2.4].
115 * link:v2.3.10/git.html[documentation for release 2.3.10]
118 link:RelNotes/2.3.10.txt[2.3.10],
119 link:RelNotes/2.3.9.txt[2.3.9],
120 link:RelNotes/2.3.8.txt[2.3.8],
121 link:RelNotes/2.3.7.txt[2.3.7],
122 link:RelNotes/2.3.6.txt[2.3.6],
123 link:RelNotes/2.3.5.txt[2.3.5],
124 link:RelNotes/2.3.4.txt[2.3.4],
125 link:RelNotes/2.3.3.txt[2.3.3],
126 link:RelNotes/2.3.2.txt[2.3.2],
127 link:RelNotes/2.3.1.txt[2.3.1],
128 link:RelNotes/2.3.0.txt[2.3].
130 * link:v2.2.3/git.html[documentation for release 2.2.3]
133 link:RelNotes/2.2.3.txt[2.2.3],
134 link:RelNotes/2.2.2.txt[2.2.2],
135 link:RelNotes/2.2.1.txt[2.2.1],
136 link:RelNotes/2.2.0.txt[2.2].
138 * link:v2.1.4/git.html[documentation for release 2.1.4]
141 link:RelNotes/2.1.4.txt[2.1.4],
142 link:RelNotes/2.1.3.txt[2.1.3],
143 link:RelNotes/2.1.2.txt[2.1.2],
144 link:RelNotes/2.1.1.txt[2.1.1],
145 link:RelNotes/2.1.0.txt[2.1].
147 * link:v2.0.5/git.html[documentation for release 2.0.5]
150 link:RelNotes/2.0.5.txt[2.0.5],
151 link:RelNotes/2.0.4.txt[2.0.4],
152 link:RelNotes/2.0.3.txt[2.0.3],
153 link:RelNotes/2.0.2.txt[2.0.2],
154 link:RelNotes/2.0.1.txt[2.0.1],
155 link:RelNotes/2.0.0.txt[2.0.0].
157 * link:v1.9.5/git.html[documentation for release 1.9.5]
160 link:RelNotes/1.9.5.txt[1.9.5],
161 link:RelNotes/1.9.4.txt[1.9.4],
162 link:RelNotes/1.9.3.txt[1.9.3],
163 link:RelNotes/1.9.2.txt[1.9.2],
164 link:RelNotes/1.9.1.txt[1.9.1],
165 link:RelNotes/1.9.0.txt[1.9.0].
167 * link:v1.8.5.6/git.html[documentation for release 1.8.5.6]
170 link:RelNotes/1.8.5.6.txt[1.8.5.6],
171 link:RelNotes/1.8.5.5.txt[1.8.5.5],
172 link:RelNotes/1.8.5.4.txt[1.8.5.4],
173 link:RelNotes/1.8.5.3.txt[1.8.5.3],
174 link:RelNotes/1.8.5.2.txt[1.8.5.2],
175 link:RelNotes/1.8.5.1.txt[1.8.5.1],
176 link:RelNotes/1.8.5.txt[1.8.5].
178 * link:v1.8.4.5/git.html[documentation for release 1.8.4.5]
181 link:RelNotes/1.8.4.5.txt[1.8.4.5],
182 link:RelNotes/1.8.4.4.txt[1.8.4.4],
183 link:RelNotes/1.8.4.3.txt[1.8.4.3],
184 link:RelNotes/1.8.4.2.txt[1.8.4.2],
185 link:RelNotes/1.8.4.1.txt[1.8.4.1],
186 link:RelNotes/1.8.4.txt[1.8.4].
188 * link:v1.8.3.4/git.html[documentation for release 1.8.3.4]
191 link:RelNotes/1.8.3.4.txt[1.8.3.4],
192 link:RelNotes/1.8.3.3.txt[1.8.3.3],
193 link:RelNotes/1.8.3.2.txt[1.8.3.2],
194 link:RelNotes/1.8.3.1.txt[1.8.3.1],
195 link:RelNotes/1.8.3.txt[1.8.3].
197 * link:v1.8.2.3/git.html[documentation for release 1.8.2.3]
200 link:RelNotes/1.8.2.3.txt[1.8.2.3],
201 link:RelNotes/1.8.2.2.txt[1.8.2.2],
202 link:RelNotes/1.8.2.1.txt[1.8.2.1],
203 link:RelNotes/1.8.2.txt[1.8.2].
205 * link:v1.8.1.6/git.html[documentation for release 1.8.1.6]
208 link:RelNotes/1.8.1.6.txt[1.8.1.6],
209 link:RelNotes/1.8.1.5.txt[1.8.1.5],
210 link:RelNotes/1.8.1.4.txt[1.8.1.4],
211 link:RelNotes/1.8.1.3.txt[1.8.1.3],
212 link:RelNotes/1.8.1.2.txt[1.8.1.2],
213 link:RelNotes/1.8.1.1.txt[1.8.1.1],
214 link:RelNotes/1.8.1.txt[1.8.1].
216 * link:v1.8.0.3/git.html[documentation for release 1.8.0.3]
219 link:RelNotes/1.8.0.3.txt[1.8.0.3],
220 link:RelNotes/1.8.0.2.txt[1.8.0.2],
221 link:RelNotes/1.8.0.1.txt[1.8.0.1],
222 link:RelNotes/1.8.0.txt[1.8.0].
224 * link:v1.7.12.4/git.html[documentation for release 1.7.12.4]
227 link:RelNotes/1.7.12.4.txt[1.7.12.4],
228 link:RelNotes/1.7.12.3.txt[1.7.12.3],
229 link:RelNotes/1.7.12.2.txt[1.7.12.2],
230 link:RelNotes/1.7.12.1.txt[1.7.12.1],
231 link:RelNotes/1.7.12.txt[1.7.12].
233 * link:v1.7.11.7/git.html[documentation for release 1.7.11.7]
236 link:RelNotes/1.7.11.7.txt[1.7.11.7],
237 link:RelNotes/1.7.11.6.txt[1.7.11.6],
238 link:RelNotes/1.7.11.5.txt[1.7.11.5],
239 link:RelNotes/1.7.11.4.txt[1.7.11.4],
240 link:RelNotes/1.7.11.3.txt[1.7.11.3],
241 link:RelNotes/1.7.11.2.txt[1.7.11.2],
242 link:RelNotes/1.7.11.1.txt[1.7.11.1],
243 link:RelNotes/1.7.11.txt[1.7.11].
245 * link:v1.7.10.5/git.html[documentation for release 1.7.10.5]
248 link:RelNotes/1.7.10.5.txt[1.7.10.5],
249 link:RelNotes/1.7.10.4.txt[1.7.10.4],
250 link:RelNotes/1.7.10.3.txt[1.7.10.3],
251 link:RelNotes/1.7.10.2.txt[1.7.10.2],
252 link:RelNotes/1.7.10.1.txt[1.7.10.1],
253 link:RelNotes/1.7.10.txt[1.7.10].
255 * link:v1.7.9.7/git.html[documentation for release 1.7.9.7]
258 link:RelNotes/1.7.9.7.txt[1.7.9.7],
259 link:RelNotes/1.7.9.6.txt[1.7.9.6],
260 link:RelNotes/1.7.9.5.txt[1.7.9.5],
261 link:RelNotes/1.7.9.4.txt[1.7.9.4],
262 link:RelNotes/1.7.9.3.txt[1.7.9.3],
263 link:RelNotes/1.7.9.2.txt[1.7.9.2],
264 link:RelNotes/1.7.9.1.txt[1.7.9.1],
265 link:RelNotes/1.7.9.txt[1.7.9].
267 * link:v1.7.8.6/git.html[documentation for release 1.7.8.6]
270 link:RelNotes/1.7.8.6.txt[1.7.8.6],
271 link:RelNotes/1.7.8.5.txt[1.7.8.5],
272 link:RelNotes/1.7.8.4.txt[1.7.8.4],
273 link:RelNotes/1.7.8.3.txt[1.7.8.3],
274 link:RelNotes/1.7.8.2.txt[1.7.8.2],
275 link:RelNotes/1.7.8.1.txt[1.7.8.1],
276 link:RelNotes/1.7.8.txt[1.7.8].
278 * link:v1.7.7.7/git.html[documentation for release 1.7.7.7]
281 link:RelNotes/1.7.7.7.txt[1.7.7.7],
282 link:RelNotes/1.7.7.6.txt[1.7.7.6],
283 link:RelNotes/1.7.7.5.txt[1.7.7.5],
284 link:RelNotes/1.7.7.4.txt[1.7.7.4],
285 link:RelNotes/1.7.7.3.txt[1.7.7.3],
286 link:RelNotes/1.7.7.2.txt[1.7.7.2],
287 link:RelNotes/1.7.7.1.txt[1.7.7.1],
288 link:RelNotes/1.7.7.txt[1.7.7].
290 * link:v1.7.6.6/git.html[documentation for release 1.7.6.6]
293 link:RelNotes/1.7.6.6.txt[1.7.6.6],
294 link:RelNotes/1.7.6.5.txt[1.7.6.5],
295 link:RelNotes/1.7.6.4.txt[1.7.6.4],
296 link:RelNotes/1.7.6.3.txt[1.7.6.3],
297 link:RelNotes/1.7.6.2.txt[1.7.6.2],
298 link:RelNotes/1.7.6.1.txt[1.7.6.1],
299 link:RelNotes/1.7.6.txt[1.7.6].
301 * link:v1.7.5.4/git.html[documentation for release 1.7.5.4]
304 link:RelNotes/1.7.5.4.txt[1.7.5.4],
305 link:RelNotes/1.7.5.3.txt[1.7.5.3],
306 link:RelNotes/1.7.5.2.txt[1.7.5.2],
307 link:RelNotes/1.7.5.1.txt[1.7.5.1],
308 link:RelNotes/1.7.5.txt[1.7.5].
310 * link:v1.7.4.5/git.html[documentation for release 1.7.4.5]
313 link:RelNotes/1.7.4.5.txt[1.7.4.5],
314 link:RelNotes/1.7.4.4.txt[1.7.4.4],
315 link:RelNotes/1.7.4.3.txt[1.7.4.3],
316 link:RelNotes/1.7.4.2.txt[1.7.4.2],
317 link:RelNotes/1.7.4.1.txt[1.7.4.1],
318 link:RelNotes/1.7.4.txt[1.7.4].
320 * link:v1.7.3.5/git.html[documentation for release 1.7.3.5]
323 link:RelNotes/1.7.3.5.txt[1.7.3.5],
324 link:RelNotes/1.7.3.4.txt[1.7.3.4],
325 link:RelNotes/1.7.3.3.txt[1.7.3.3],
326 link:RelNotes/1.7.3.2.txt[1.7.3.2],
327 link:RelNotes/1.7.3.1.txt[1.7.3.1],
328 link:RelNotes/1.7.3.txt[1.7.3].
330 * link:v1.7.2.5/git.html[documentation for release 1.7.2.5]
333 link:RelNotes/1.7.2.5.txt[1.7.2.5],
334 link:RelNotes/1.7.2.4.txt[1.7.2.4],
335 link:RelNotes/1.7.2.3.txt[1.7.2.3],
336 link:RelNotes/1.7.2.2.txt[1.7.2.2],
337 link:RelNotes/1.7.2.1.txt[1.7.2.1],
338 link:RelNotes/1.7.2.txt[1.7.2].
340 * link:v1.7.1.4/git.html[documentation for release 1.7.1.4]
343 link:RelNotes/1.7.1.4.txt[1.7.1.4],
344 link:RelNotes/1.7.1.3.txt[1.7.1.3],
345 link:RelNotes/1.7.1.2.txt[1.7.1.2],
346 link:RelNotes/1.7.1.1.txt[1.7.1.1],
347 link:RelNotes/1.7.1.txt[1.7.1].
349 * link:v1.7.0.9/git.html[documentation for release 1.7.0.9]
352 link:RelNotes/1.7.0.9.txt[1.7.0.9],
353 link:RelNotes/1.7.0.8.txt[1.7.0.8],
354 link:RelNotes/1.7.0.7.txt[1.7.0.7],
355 link:RelNotes/1.7.0.6.txt[1.7.0.6],
356 link:RelNotes/1.7.0.5.txt[1.7.0.5],
357 link:RelNotes/1.7.0.4.txt[1.7.0.4],
358 link:RelNotes/1.7.0.3.txt[1.7.0.3],
359 link:RelNotes/1.7.0.2.txt[1.7.0.2],
360 link:RelNotes/1.7.0.1.txt[1.7.0.1],
361 link:RelNotes/1.7.0.txt[1.7.0].
363 * link:v1.6.6.3/git.html[documentation for release 1.6.6.3]
366 link:RelNotes/1.6.6.3.txt[1.6.6.3],
367 link:RelNotes/1.6.6.2.txt[1.6.6.2],
368 link:RelNotes/1.6.6.1.txt[1.6.6.1],
369 link:RelNotes/1.6.6.txt[1.6.6].
371 * link:v1.6.5.9/git.html[documentation for release 1.6.5.9]
374 link:RelNotes/1.6.5.9.txt[1.6.5.9],
375 link:RelNotes/1.6.5.8.txt[1.6.5.8],
376 link:RelNotes/1.6.5.7.txt[1.6.5.7],
377 link:RelNotes/1.6.5.6.txt[1.6.5.6],
378 link:RelNotes/1.6.5.5.txt[1.6.5.5],
379 link:RelNotes/1.6.5.4.txt[1.6.5.4],
380 link:RelNotes/1.6.5.3.txt[1.6.5.3],
381 link:RelNotes/1.6.5.2.txt[1.6.5.2],
382 link:RelNotes/1.6.5.1.txt[1.6.5.1],
383 link:RelNotes/1.6.5.txt[1.6.5].
385 * link:v1.6.4.5/git.html[documentation for release 1.6.4.5]
388 link:RelNotes/1.6.4.5.txt[1.6.4.5],
389 link:RelNotes/1.6.4.4.txt[1.6.4.4],
390 link:RelNotes/1.6.4.3.txt[1.6.4.3],
391 link:RelNotes/1.6.4.2.txt[1.6.4.2],
392 link:RelNotes/1.6.4.1.txt[1.6.4.1],
393 link:RelNotes/1.6.4.txt[1.6.4].
395 * link:v1.6.3.4/git.html[documentation for release 1.6.3.4]
398 link:RelNotes/1.6.3.4.txt[1.6.3.4],
399 link:RelNotes/1.6.3.3.txt[1.6.3.3],
400 link:RelNotes/1.6.3.2.txt[1.6.3.2],
401 link:RelNotes/1.6.3.1.txt[1.6.3.1],
402 link:RelNotes/1.6.3.txt[1.6.3].
405 link:RelNotes/1.6.2.5.txt[1.6.2.5],
406 link:RelNotes/1.6.2.4.txt[1.6.2.4],
407 link:RelNotes/1.6.2.3.txt[1.6.2.3],
408 link:RelNotes/1.6.2.2.txt[1.6.2.2],
409 link:RelNotes/1.6.2.1.txt[1.6.2.1],
410 link:RelNotes/1.6.2.txt[1.6.2].
412 * link:v1.6.1.3/git.html[documentation for release 1.6.1.3]
415 link:RelNotes/1.6.1.3.txt[1.6.1.3],
416 link:RelNotes/1.6.1.2.txt[1.6.1.2],
417 link:RelNotes/1.6.1.1.txt[1.6.1.1],
418 link:RelNotes/1.6.1.txt[1.6.1].
420 * link:v1.6.0.6/git.html[documentation for release 1.6.0.6]
423 link:RelNotes/1.6.0.6.txt[1.6.0.6],
424 link:RelNotes/1.6.0.5.txt[1.6.0.5],
425 link:RelNotes/1.6.0.4.txt[1.6.0.4],
426 link:RelNotes/1.6.0.3.txt[1.6.0.3],
427 link:RelNotes/1.6.0.2.txt[1.6.0.2],
428 link:RelNotes/1.6.0.1.txt[1.6.0.1],
429 link:RelNotes/1.6.0.txt[1.6.0].
431 * link:v1.5.6.6/git.html[documentation for release 1.5.6.6]
434 link:RelNotes/1.5.6.6.txt[1.5.6.6],
435 link:RelNotes/1.5.6.5.txt[1.5.6.5],
436 link:RelNotes/1.5.6.4.txt[1.5.6.4],
437 link:RelNotes/1.5.6.3.txt[1.5.6.3],
438 link:RelNotes/1.5.6.2.txt[1.5.6.2],
439 link:RelNotes/1.5.6.1.txt[1.5.6.1],
440 link:RelNotes/1.5.6.txt[1.5.6].
442 * link:v1.5.5.6/git.html[documentation for release 1.5.5.6]
445 link:RelNotes/1.5.5.6.txt[1.5.5.6],
446 link:RelNotes/1.5.5.5.txt[1.5.5.5],
447 link:RelNotes/1.5.5.4.txt[1.5.5.4],
448 link:RelNotes/1.5.5.3.txt[1.5.5.3],
449 link:RelNotes/1.5.5.2.txt[1.5.5.2],
450 link:RelNotes/1.5.5.1.txt[1.5.5.1],
451 link:RelNotes/1.5.5.txt[1.5.5].
453 * link:v1.5.4.7/git.html[documentation for release 1.5.4.7]
456 link:RelNotes/1.5.4.7.txt[1.5.4.7],
457 link:RelNotes/1.5.4.6.txt[1.5.4.6],
458 link:RelNotes/1.5.4.5.txt[1.5.4.5],
459 link:RelNotes/1.5.4.4.txt[1.5.4.4],
460 link:RelNotes/1.5.4.3.txt[1.5.4.3],
461 link:RelNotes/1.5.4.2.txt[1.5.4.2],
462 link:RelNotes/1.5.4.1.txt[1.5.4.1],
463 link:RelNotes/1.5.4.txt[1.5.4].
465 * link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
468 link:RelNotes/1.5.3.8.txt[1.5.3.8],
469 link:RelNotes/1.5.3.7.txt[1.5.3.7],
470 link:RelNotes/1.5.3.6.txt[1.5.3.6],
471 link:RelNotes/1.5.3.5.txt[1.5.3.5],
472 link:RelNotes/1.5.3.4.txt[1.5.3.4],
473 link:RelNotes/1.5.3.3.txt[1.5.3.3],
474 link:RelNotes/1.5.3.2.txt[1.5.3.2],
475 link:RelNotes/1.5.3.1.txt[1.5.3.1],
476 link:RelNotes/1.5.3.txt[1.5.3].
478 * link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
481 link:RelNotes/1.5.2.5.txt[1.5.2.5],
482 link:RelNotes/1.5.2.4.txt[1.5.2.4],
483 link:RelNotes/1.5.2.3.txt[1.5.2.3],
484 link:RelNotes/1.5.2.2.txt[1.5.2.2],
485 link:RelNotes/1.5.2.1.txt[1.5.2.1],
486 link:RelNotes/1.5.2.txt[1.5.2].
488 * link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
491 link:RelNotes/1.5.1.6.txt[1.5.1.6],
492 link:RelNotes/1.5.1.5.txt[1.5.1.5],
493 link:RelNotes/1.5.1.4.txt[1.5.1.4],
494 link:RelNotes/1.5.1.3.txt[1.5.1.3],
495 link:RelNotes/1.5.1.2.txt[1.5.1.2],
496 link:RelNotes/1.5.1.1.txt[1.5.1.1],
497 link:RelNotes/1.5.1.txt[1.5.1].
499 * link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
502 link:RelNotes/1.5.0.7.txt[1.5.0.7],
503 link:RelNotes/1.5.0.6.txt[1.5.0.6],
504 link:RelNotes/1.5.0.5.txt[1.5.0.5],
505 link:RelNotes/1.5.0.3.txt[1.5.0.3],
506 link:RelNotes/1.5.0.2.txt[1.5.0.2],
507 link:RelNotes/1.5.0.1.txt[1.5.0.1],
508 link:RelNotes/1.5.0.txt[1.5.0].
510 * documentation for release link:v1.4.4.4/git.html[1.4.4.4],
511 link:v1.3.3/git.html[1.3.3],
512 link:v1.2.6/git.html[1.2.6],
513 link:v1.0.13/git.html[1.0.13].
522 Prints the Git suite version that the 'git' program came from.
525 Prints the synopsis and a list of the most commonly used
526 commands. If the option `--all` or `-a` is given then all
527 available commands are printed. If a Git command is named this
528 option will bring up the manual page for that command.
530 Other options are available to control how the manual page is
531 displayed. See linkgit:git-help[1] for more information,
532 because `git --help ...` is converted internally into `git
536 Run as if git was started in '<path>' instead of the current working
537 directory. When multiple `-C` options are given, each subsequent
538 non-absolute `-C <path>` is interpreted relative to the preceding `-C
541 This option affects options that expect path name like `--git-dir` and
542 `--work-tree` in that their interpretations of the path names would be
543 made relative to the working directory caused by the `-C` option. For
544 example the following invocations are equivalent:
546 git --git-dir=a.git --work-tree=b -C c status
547 git --git-dir=c/a.git --work-tree=c/b status
550 Pass a configuration parameter to the command. The value
551 given will override values from configuration files.
552 The <name> is expected in the same format as listed by
553 'git config' (subkeys separated by dots).
555 Note that omitting the `=` in `git -c foo.bar ...` is allowed and sets
556 `foo.bar` to the boolean true value (just like `[foo]bar` would in a
557 config file). Including the equals but with an empty value (like `git -c
558 foo.bar= ...`) sets `foo.bar` to the empty string.
560 --exec-path[=<path>]::
561 Path to wherever your core Git programs are installed.
562 This can also be controlled by setting the GIT_EXEC_PATH
563 environment variable. If no path is given, 'git' will print
564 the current setting and then exit.
567 Print the path, without trailing slash, where Git's HTML
568 documentation is installed and exit.
571 Print the manpath (see `man(1)`) for the man pages for
572 this version of Git and exit.
575 Print the path where the Info files documenting this
576 version of Git are installed and exit.
580 Pipe all output into 'less' (or if set, $PAGER) if standard
581 output is a terminal. This overrides the `pager.<cmd>`
582 configuration options (see the "Configuration Mechanism" section
586 Do not pipe Git output into a pager.
589 Set the path to the repository. This can also be controlled by
590 setting the `GIT_DIR` environment variable. It can be an absolute
591 path or relative path to current working directory.
594 Set the path to the working tree. It can be an absolute path
595 or a path relative to the current working directory.
596 This can also be controlled by setting the GIT_WORK_TREE
597 environment variable and the core.worktree configuration
598 variable (see core.worktree in linkgit:git-config[1] for a
599 more detailed discussion).
602 Set the Git namespace. See linkgit:gitnamespaces[7] for more
603 details. Equivalent to setting the `GIT_NAMESPACE` environment
606 --super-prefix=<path>::
607 Currently for internal use only. Set a prefix which gives a path from
608 above a repository down to its root. One use is to give submodules
609 context about the superproject that invoked it.
612 Treat the repository as a bare repository. If GIT_DIR
613 environment is not set, it is set to the current working
616 --no-replace-objects::
617 Do not use replacement refs to replace Git objects. See
618 linkgit:git-replace[1] for more information.
620 --literal-pathspecs::
621 Treat pathspecs literally (i.e. no globbing, no pathspec magic).
622 This is equivalent to setting the `GIT_LITERAL_PATHSPECS` environment
626 Add "glob" magic to all pathspec. This is equivalent to setting
627 the `GIT_GLOB_PATHSPECS` environment variable to `1`. Disabling
628 globbing on individual pathspecs can be done using pathspec
632 Add "literal" magic to all pathspec. This is equivalent to setting
633 the `GIT_NOGLOB_PATHSPECS` environment variable to `1`. Enabling
634 globbing on individual pathspecs can be done using pathspec
638 Add "icase" magic to all pathspec. This is equivalent to setting
639 the `GIT_ICASE_PATHSPECS` environment variable to `1`.
644 We divide Git into high level ("porcelain") commands and low level
645 ("plumbing") commands.
647 High-level commands (porcelain)
648 -------------------------------
650 We separate the porcelain commands into the main commands and some
651 ancillary user utilities.
653 Main porcelain commands
654 ~~~~~~~~~~~~~~~~~~~~~~~
656 include::cmds-mainporcelain.txt[]
662 include::cmds-ancillarymanipulators.txt[]
666 include::cmds-ancillaryinterrogators.txt[]
669 Interacting with Others
670 ~~~~~~~~~~~~~~~~~~~~~~~
672 These commands are to interact with foreign SCM and with other
673 people via patch over e-mail.
675 include::cmds-foreignscminterface.txt[]
678 Low-level commands (plumbing)
679 -----------------------------
681 Although Git includes its
682 own porcelain layer, its low-level commands are sufficient to support
683 development of alternative porcelains. Developers of such porcelains
684 might start by reading about linkgit:git-update-index[1] and
685 linkgit:git-read-tree[1].
687 The interface (input, output, set of options and the semantics)
688 to these low-level commands are meant to be a lot more stable
689 than Porcelain level commands, because these commands are
690 primarily for scripted use. The interface to Porcelain commands
691 on the other hand are subject to change in order to improve the
694 The following description divides
695 the low-level commands into commands that manipulate objects (in
696 the repository, index, and working tree), commands that interrogate and
697 compare objects, and commands that move objects and references between
701 Manipulation commands
702 ~~~~~~~~~~~~~~~~~~~~~
704 include::cmds-plumbingmanipulators.txt[]
707 Interrogation commands
708 ~~~~~~~~~~~~~~~~~~~~~~
710 include::cmds-plumbinginterrogators.txt[]
712 In general, the interrogate commands do not touch the files in
716 Synching repositories
717 ~~~~~~~~~~~~~~~~~~~~~
719 include::cmds-synchingrepositories.txt[]
721 The following are helper commands used by the above; end users
722 typically do not use them directly.
724 include::cmds-synchelpers.txt[]
727 Internal helper commands
728 ~~~~~~~~~~~~~~~~~~~~~~~~
730 These are internal helper commands used by other commands; end
731 users typically do not use them directly.
733 include::cmds-purehelpers.txt[]
736 Configuration Mechanism
737 -----------------------
739 Git uses a simple text format to store customizations that are per
740 repository and are per user. Such a configuration file may look
745 # A '#' or ';' character indicates a comment.
750 ; Don't trust file modes
755 name = "Junio C Hamano"
756 email = "gitster@pobox.com"
760 Various commands read from the configuration file and adjust
761 their operation accordingly. See linkgit:git-config[1] for a
762 list and more details about the configuration mechanism.
765 Identifier Terminology
766 ----------------------
768 Indicates the object name for any type of object.
771 Indicates a blob object name.
774 Indicates a tree object name.
777 Indicates a commit object name.
780 Indicates a tree, commit or tag object name. A
781 command that takes a <tree-ish> argument ultimately wants to
782 operate on a <tree> object but automatically dereferences
783 <commit> and <tag> objects that point at a <tree>.
786 Indicates a commit or tag object name. A
787 command that takes a <commit-ish> argument ultimately wants to
788 operate on a <commit> object but automatically dereferences
789 <tag> objects that point at a <commit>.
792 Indicates that an object type is required.
793 Currently one of: `blob`, `tree`, `commit`, or `tag`.
796 Indicates a filename - almost always relative to the
797 root of the tree structure `GIT_INDEX_FILE` describes.
801 Any Git command accepting any <object> can also use the following
805 indicates the head of the current branch.
809 (i.e. a `refs/tags/<tag>` reference).
813 (i.e. a `refs/heads/<head>` reference).
815 For a more complete list of ways to spell object names, see
816 "SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
819 File/Directory Structure
820 ------------------------
822 Please see the linkgit:gitrepository-layout[5] document.
824 Read linkgit:githooks[5] for more details about each hook.
826 Higher level SCMs may provide and manage additional information in the
832 Please see linkgit:gitglossary[7].
835 Environment Variables
836 ---------------------
837 Various Git commands use the following environment variables:
841 These environment variables apply to 'all' core Git commands. Nb: it
842 is worth noting that they may be used/overridden by SCMS sitting above
843 Git so take care if using a foreign front-end.
846 This environment allows the specification of an alternate
847 index file. If not specified, the default of `$GIT_DIR/index`
850 `GIT_INDEX_VERSION`::
851 This environment variable allows the specification of an index
852 version for new repositories. It won't affect existing index
853 files. By default index file version 2 or 3 is used. See
854 linkgit:git-update-index[1] for more information.
856 `GIT_OBJECT_DIRECTORY`::
857 If the object storage directory is specified via this
858 environment variable then the sha1 directories are created
859 underneath - otherwise the default `$GIT_DIR/objects`
862 `GIT_ALTERNATE_OBJECT_DIRECTORIES`::
863 Due to the immutable nature of Git objects, old objects can be
864 archived into shared, read-only directories. This variable
865 specifies a ":" separated (on Windows ";" separated) list
866 of Git object directories which can be used to search for Git
867 objects. New objects will not be written to these directories.
870 If the `GIT_DIR` environment variable is set then it
871 specifies a path to use instead of the default `.git`
872 for the base of the repository.
873 The `--git-dir` command-line option also sets this value.
876 Set the path to the root of the working tree.
877 This can also be controlled by the `--work-tree` command-line
878 option and the core.worktree configuration variable.
881 Set the Git namespace; see linkgit:gitnamespaces[7] for details.
882 The `--namespace` command-line option also sets this value.
884 `GIT_CEILING_DIRECTORIES`::
885 This should be a colon-separated list of absolute paths. If
886 set, it is a list of directories that Git should not chdir up
887 into while looking for a repository directory (useful for
888 excluding slow-loading network directories). It will not
889 exclude the current working directory or a GIT_DIR set on the
890 command line or in the environment. Normally, Git has to read
891 the entries in this list and resolve any symlink that
892 might be present in order to compare them with the current
893 directory. However, if even this access is slow, you
894 can add an empty entry to the list to tell Git that the
895 subsequent entries are not symlinks and needn't be resolved;
897 `GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink`.
899 `GIT_DISCOVERY_ACROSS_FILESYSTEM`::
900 When run in a directory that does not have ".git" repository
901 directory, Git tries to find such a directory in the parent
902 directories to find the top of the working tree, but by default it
903 does not cross filesystem boundaries. This environment variable
904 can be set to true to tell Git not to stop at filesystem
905 boundaries. Like `GIT_CEILING_DIRECTORIES`, this will not affect
906 an explicit repository directory set via `GIT_DIR` or on the
910 If this variable is set to a path, non-worktree files that are
911 normally in $GIT_DIR will be taken from this path
912 instead. Worktree-specific files such as HEAD or index are
913 taken from $GIT_DIR. See linkgit:gitrepository-layout[5] and
914 linkgit:git-worktree[1] for
915 details. This variable has lower precedence than other path
916 variables such as GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY...
923 `GIT_COMMITTER_NAME`::
924 `GIT_COMMITTER_EMAIL`::
925 `GIT_COMMITTER_DATE`::
927 see linkgit:git-commit-tree[1]
932 Only valid setting is "--unified=??" or "-u??" to set the
933 number of context lines shown when a unified diff is created.
934 This takes precedence over any "-U" or "--unified" option
935 value passed on the Git diff command line.
937 `GIT_EXTERNAL_DIFF`::
938 When the environment variable `GIT_EXTERNAL_DIFF` is set, the
939 program named by it is called, instead of the diff invocation
940 described above. For a path that is added, removed, or modified,
941 `GIT_EXTERNAL_DIFF` is called with 7 parameters:
943 path old-file old-hex old-mode new-file new-hex new-mode
947 <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
948 contents of <old|new>,
949 <old|new>-hex:: are the 40-hexdigit SHA-1 hashes,
950 <old|new>-mode:: are the octal representation of the file modes.
952 The file parameters can point at the user's working file
953 (e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
954 when a new file is added), or a temporary file (e.g. `old-file` in the
955 index). `GIT_EXTERNAL_DIFF` should not worry about unlinking the
956 temporary file --- it is removed when `GIT_EXTERNAL_DIFF` exits.
958 For a path that is unmerged, `GIT_EXTERNAL_DIFF` is called with 1
961 For each path `GIT_EXTERNAL_DIFF` is called, two environment variables,
962 `GIT_DIFF_PATH_COUNTER` and `GIT_DIFF_PATH_TOTAL` are set.
964 `GIT_DIFF_PATH_COUNTER`::
965 A 1-based counter incremented by one for every path.
967 `GIT_DIFF_PATH_TOTAL`::
968 The total number of paths.
972 `GIT_MERGE_VERBOSITY`::
973 A number controlling the amount of output shown by
974 the recursive merge strategy. Overrides merge.verbosity.
975 See linkgit:git-merge[1]
978 This environment variable overrides `$PAGER`. If it is set
979 to an empty string or to the value "cat", Git will not launch
980 a pager. See also the `core.pager` option in
981 linkgit:git-config[1].
984 This environment variable overrides `$EDITOR` and `$VISUAL`.
985 It is used by several Git commands when, on interactive mode,
986 an editor is to be launched. See also linkgit:git-var[1]
987 and the `core.editor` option in linkgit:git-config[1].
991 If either of these environment variables is set then 'git fetch'
992 and 'git push' will use the specified command instead of 'ssh'
993 when they need to connect to a remote system.
994 The command will be given exactly two or four arguments: the
995 'username@host' (or just 'host') from the URL and the shell
996 command to execute on that remote system, optionally preceded by
997 `-p` (literally) and the 'port' from the URL when it specifies
998 something other than the default SSH port.
1000 `$GIT_SSH_COMMAND` takes precedence over `$GIT_SSH`, and is interpreted
1001 by the shell, which allows additional arguments to be included.
1002 `$GIT_SSH` on the other hand must be just the path to a program
1003 (which can be a wrapper shell script, if additional arguments are
1006 Usually it is easier to configure any desired options through your
1007 personal `.ssh/config` file. Please consult your ssh documentation
1008 for further details.
1011 If this environment variable is set, then Git commands which need to
1012 acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
1013 will call this program with a suitable prompt as command-line argument
1014 and read the password from its STDOUT. See also the `core.askPass`
1015 option in linkgit:git-config[1].
1017 `GIT_TERMINAL_PROMPT`::
1018 If this environment variable is set to `0`, git will not prompt
1019 on the terminal (e.g., when asking for HTTP authentication).
1021 `GIT_CONFIG_NOSYSTEM`::
1022 Whether to skip reading settings from the system-wide
1023 `$(prefix)/etc/gitconfig` file. This environment variable can
1024 be used along with `$HOME` and `$XDG_CONFIG_HOME` to create a
1025 predictable environment for a picky script, or you can set it
1026 temporarily to avoid using a buggy `/etc/gitconfig` file while
1027 waiting for someone with sufficient permissions to fix it.
1030 If this environment variable is set to "1", then commands such
1031 as 'git blame' (in incremental mode), 'git rev-list', 'git log',
1032 'git check-attr' and 'git check-ignore' will
1033 force a flush of the output stream after each record have been
1035 variable is set to "0", the output of these commands will be done
1036 using completely buffered I/O. If this environment variable is
1037 not set, Git will choose buffered or record-oriented flushing
1038 based on whether stdout appears to be redirected to a file or not.
1041 Enables general trace messages, e.g. alias expansion, built-in
1042 command execution and external command execution.
1044 If this variable is set to "1", "2" or "true" (comparison
1045 is case insensitive), trace messages will be printed to
1048 If the variable is set to an integer value greater than 2
1049 and lower than 10 (strictly) then Git will interpret this
1050 value as an open file descriptor and will try to write the
1051 trace messages into this file descriptor.
1053 Alternatively, if the variable is set to an absolute path
1054 (starting with a '/' character), Git will interpret this
1055 as a file path and will try to write the trace messages
1058 Unsetting the variable, or setting it to empty, "0" or
1059 "false" (case insensitive) disables trace messages.
1061 `GIT_TRACE_PACK_ACCESS`::
1062 Enables trace messages for all accesses to any packs. For each
1063 access, the pack file name and an offset in the pack is
1064 recorded. This may be helpful for troubleshooting some
1065 pack-related performance problems.
1066 See `GIT_TRACE` for available trace output options.
1068 `GIT_TRACE_PACKET`::
1069 Enables trace messages for all packets coming in or out of a
1070 given program. This can help with debugging object negotiation
1071 or other protocol issues. Tracing is turned off at a packet
1072 starting with "PACK" (but see `GIT_TRACE_PACKFILE` below).
1073 See `GIT_TRACE` for available trace output options.
1075 `GIT_TRACE_PACKFILE`::
1076 Enables tracing of packfiles sent or received by a
1077 given program. Unlike other trace output, this trace is
1078 verbatim: no headers, and no quoting of binary data. You almost
1079 certainly want to direct into a file (e.g.,
1080 `GIT_TRACE_PACKFILE=/tmp/my.pack`) rather than displaying it on
1081 the terminal or mixing it with other trace output.
1083 Note that this is currently only implemented for the client side
1084 of clones and fetches.
1086 `GIT_TRACE_PERFORMANCE`::
1087 Enables performance related trace messages, e.g. total execution
1088 time of each Git command.
1089 See `GIT_TRACE` for available trace output options.
1092 Enables trace messages printing the .git, working tree and current
1093 working directory after Git has completed its setup phase.
1094 See `GIT_TRACE` for available trace output options.
1096 `GIT_TRACE_SHALLOW`::
1097 Enables trace messages that can help debugging fetching /
1098 cloning of shallow repositories.
1099 See `GIT_TRACE` for available trace output options.
1102 Enables a curl full trace dump of all incoming and outgoing data,
1103 including descriptive information, of the git transport protocol.
1104 This is similar to doing curl `--trace-ascii` on the command line.
1105 This option overrides setting the `GIT_CURL_VERBOSE` environment
1107 See `GIT_TRACE` for available trace output options.
1109 `GIT_LITERAL_PATHSPECS`::
1110 Setting this variable to `1` will cause Git to treat all
1111 pathspecs literally, rather than as glob patterns. For example,
1112 running `GIT_LITERAL_PATHSPECS=1 git log -- '*.c'` will search
1113 for commits that touch the path `*.c`, not any paths that the
1114 glob `*.c` matches. You might want this if you are feeding
1115 literal paths to Git (e.g., paths previously given to you by
1116 `git ls-tree`, `--raw` diff output, etc).
1118 `GIT_GLOB_PATHSPECS`::
1119 Setting this variable to `1` will cause Git to treat all
1120 pathspecs as glob patterns (aka "glob" magic).
1122 `GIT_NOGLOB_PATHSPECS`::
1123 Setting this variable to `1` will cause Git to treat all
1124 pathspecs as literal (aka "literal" magic).
1126 `GIT_ICASE_PATHSPECS`::
1127 Setting this variable to `1` will cause Git to treat all
1128 pathspecs as case-insensitive.
1130 `GIT_REFLOG_ACTION`::
1131 When a ref is updated, reflog entries are created to keep
1132 track of the reason why the ref was updated (which is
1133 typically the name of the high-level command that updated
1134 the ref), in addition to the old and new values of the ref.
1135 A scripted Porcelain command can use set_reflog_action
1136 helper function in `git-sh-setup` to set its name to this
1137 variable when it is invoked as the top level command by the
1138 end user, to be recorded in the body of the reflog.
1140 `GIT_REF_PARANOIA`::
1141 If set to `1`, include broken or badly named refs when iterating
1142 over lists of refs. In a normal, non-corrupted repository, this
1143 does nothing. However, enabling it may help git to detect and
1144 abort some operations in the presence of broken refs. Git sets
1145 this variable automatically when performing destructive
1146 operations like linkgit:git-prune[1]. You should not need to set
1147 it yourself unless you want to be paranoid about making sure
1148 an operation has touched every ref (e.g., because you are
1149 cloning a repository to make a backup).
1151 `GIT_ALLOW_PROTOCOL`::
1152 If set, provide a colon-separated list of protocols which are
1153 allowed to be used with fetch/push/clone. This is useful to
1154 restrict recursive submodule initialization from an untrusted
1155 repository. Any protocol not mentioned will be disallowed (i.e.,
1156 this is a whitelist, not a blacklist). If the variable is not
1157 set at all, all protocols are enabled. The protocol names
1158 currently used by git are:
1160 - `file`: any local file-based path (including `file://` URLs,
1163 - `git`: the anonymous git protocol over a direct TCP
1164 connection (or proxy, if configured)
1166 - `ssh`: git over ssh (including `host:path` syntax,
1169 - `http`: git over http, both "smart http" and "dumb http".
1170 Note that this does _not_ include `https`; if you want both,
1171 you should specify both as `http:https`.
1173 - any external helpers are named by their protocol (e.g., use
1174 `hg` to allow the `git-remote-hg` helper)
1177 Discussion[[Discussion]]
1178 ------------------------
1180 More detail on the following is available from the
1181 link:user-manual.html#git-concepts[Git concepts chapter of the
1182 user-manual] and linkgit:gitcore-tutorial[7].
1184 A Git project normally consists of a working directory with a ".git"
1185 subdirectory at the top level. The .git directory contains, among other
1186 things, a compressed object database representing the complete history
1187 of the project, an "index" file which links that history to the current
1188 contents of the working tree, and named pointers into that history such
1189 as tags and branch heads.
1191 The object database contains objects of three main types: blobs, which
1192 hold file data; trees, which point to blobs and other trees to build up
1193 directory hierarchies; and commits, which each reference a single tree
1194 and some number of parent commits.
1196 The commit, equivalent to what other systems call a "changeset" or
1197 "version", represents a step in the project's history, and each parent
1198 represents an immediately preceding step. Commits with more than one
1199 parent represent merges of independent lines of development.
1201 All objects are named by the SHA-1 hash of their contents, normally
1202 written as a string of 40 hex digits. Such names are globally unique.
1203 The entire history leading up to a commit can be vouched for by signing
1204 just that commit. A fourth object type, the tag, is provided for this
1207 When first created, objects are stored in individual files, but for
1208 efficiency may later be compressed together into "pack files".
1210 Named pointers called refs mark interesting points in history. A ref
1211 may contain the SHA-1 name of an object or the name of another ref. Refs
1212 with names beginning `ref/head/` contain the SHA-1 name of the most
1213 recent commit (or "head") of a branch under development. SHA-1 names of
1214 tags of interest are stored under `ref/tags/`. A special ref named
1215 `HEAD` contains the name of the currently checked-out branch.
1217 The index file is initialized with a list of all paths and, for each
1218 path, a blob object and a set of attributes. The blob object represents
1219 the contents of the file as of the head of the current branch. The
1220 attributes (last modified time, size, etc.) are taken from the
1221 corresponding file in the working tree. Subsequent changes to the
1222 working tree can be found by comparing these attributes. The index may
1223 be updated with new content, and new commits may be created from the
1224 content stored in the index.
1226 The index is also capable of storing multiple entries (called "stages")
1227 for a given pathname. These stages are used to hold the various
1228 unmerged version of a file when a merge is in progress.
1230 FURTHER DOCUMENTATION
1231 ---------------------
1233 See the references in the "description" section to get started
1234 using Git. The following is probably more detail than necessary
1235 for a first-time user.
1237 The link:user-manual.html#git-concepts[Git concepts chapter of the
1238 user-manual] and linkgit:gitcore-tutorial[7] both provide
1239 introductions to the underlying Git architecture.
1241 See linkgit:gitworkflows[7] for an overview of recommended workflows.
1243 See also the link:howto-index.html[howto] documents for some useful
1246 The internals are documented in the
1247 link:technical/api-index.html[Git API documentation].
1249 Users migrating from CVS may also want to
1250 read linkgit:gitcvs-migration[7].
1255 Git was started by Linus Torvalds, and is currently maintained by Junio
1256 C Hamano. Numerous contributions have come from the Git mailing list
1257 <git@vger.kernel.org>. http://www.openhub.net/p/git/contributors/summary
1258 gives you a more complete list of contributors.
1260 If you have a clone of git.git itself, the
1261 output of linkgit:git-shortlog[1] and linkgit:git-blame[1] can show you
1262 the authors for specific parts of the project.
1267 Report bugs to the Git mailing list <git@vger.kernel.org> where the
1268 development and maintenance is primarily done. You do not have to be
1269 subscribed to the list to send a message there.
1273 linkgit:gittutorial[7], linkgit:gittutorial-2[7],
1274 linkgit:giteveryday[7], linkgit:gitcvs-migration[7],
1275 linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
1276 linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
1277 linkgit:gitworkflows[7]
1281 Part of the linkgit:git[1] suite