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