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