blob: 51ca39291f281ddc4c971d1aa824e800a02857fd [file] [log] [blame]
Christian Couder9e1f0a82008-06-06 09:07:32 +02001git(1)
David Greaves2cf565c2005-05-10 22:32:30 +01002======
David Greaves2cf565c2005-05-10 22:32:30 +01003
4NAME
5----
6git - the stupid content tracker
7
8
9SYNOPSIS
10--------
Jonas Fonseca8b700042006-08-25 03:05:48 +020011[verse]
Markus Heidelberg89a56bf2009-04-05 04:15:16 +020012'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
Christian Couderb0fa7ab2009-10-12 22:30:32 +020013 [-p|--paginate|--no-pager] [--no-replace-objects]
Matthias Lederhofer892c41b2007-06-06 09:10:42 +020014 [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
15 [--help] COMMAND [ARGS]
David Greaves2cf565c2005-05-10 22:32:30 +010016
17DESCRIPTION
18-----------
J. Bruce Fields23091e92006-04-02 17:54:34 -040019Git is a fast, scalable, distributed revision control system with an
20unusually rich command set that provides both high-level operations
21and full access to internals.
22
Jonathan Nieder6998e4d2008-06-30 17:01:21 -050023See linkgit:gittutorial[7] to get started, then see
J. Bruce Fields23091e92006-04-02 17:54:34 -040024link:everyday.html[Everyday Git] for a useful minimum set of commands, and
25"man git-commandname" for documentation of each command. CVS users may
Jonathan Nieder6998e4d2008-06-30 17:01:21 -050026also want to read linkgit:gitcvs-migration[7]. See
27the link:user-manual.html[Git User's Manual] for a more in-depth
J. Bruce Fieldsa1dc34f2007-05-07 01:01:42 -040028introduction.
David Greaves2cf565c2005-05-10 22:32:30 +010029
Petr Baudis4514ad42006-06-07 20:43:50 +020030The COMMAND is either a name of a Git command (see below) or an alias
Dan McGee5162e692007-12-29 00:20:38 -060031as defined in the configuration file (see linkgit:git-config[1]).
Petr Baudis4514ad42006-06-07 20:43:50 +020032
Jari Aalto34b604a2007-04-30 14:21:38 +030033Formatted and hyperlinked version of the latest git
34documentation can be viewed at
35`http://www.kernel.org/pub/software/scm/git/docs/`.
36
Junio C Hamano26cfcfb2007-02-13 15:15:05 -080037ifdef::stalenotes[]
38[NOTE]
39============
Junio C Hamano26cfcfb2007-02-13 15:15:05 -080040
Junio C Hamano2ff3f612007-05-18 21:43:13 -070041You are reading the documentation for the latest (possibly
42unreleased) version of git, that is available from 'master'
43branch of the `git.git` repository.
44Documentation for older releases are available here:
Junio C Hamano43a8e4f2007-03-28 15:40:17 -070045
Junio C Hamano527b9d72009-12-16 10:23:54 -080046* link:v1.6.5.7/git.html[documentation for release 1.6.5.7]
Junio C Hamano78d553b2009-10-10 00:05:19 -070047
48* release notes for
Junio C Hamano527b9d72009-12-16 10:23:54 -080049 link:RelNotes-1.6.5.7.txt[1.6.5.7],
Junio C Hamano9861b642009-12-10 15:42:30 -080050 link:RelNotes-1.6.5.6.txt[1.6.5.6],
Junio C Hamanoaa031312009-12-05 11:08:35 -080051 link:RelNotes-1.6.5.5.txt[1.6.5.5],
Junio C Hamanoeefe19f2009-12-03 00:08:16 -080052 link:RelNotes-1.6.5.4.txt[1.6.5.4],
Junio C Hamano080cbc12009-11-16 00:05:12 -080053 link:RelNotes-1.6.5.3.txt[1.6.5.3],
Junio C Hamano6c0efa22009-10-25 18:37:56 -070054 link:RelNotes-1.6.5.2.txt[1.6.5.2],
Junio C Hamanob142da22009-10-16 23:56:55 -070055 link:RelNotes-1.6.5.1.txt[1.6.5.1],
Junio C Hamano78d553b2009-10-10 00:05:19 -070056 link:RelNotes-1.6.5.txt[1.6.5].
57
Junio C Hamanocb572202009-09-16 14:53:26 -070058* link:v1.6.4.4/git.html[documentation for release 1.6.4.4]
Junio C Hamano0a53e9d2009-07-29 00:32:42 -070059
60* release notes for
Junio C Hamanocb572202009-09-16 14:53:26 -070061 link:RelNotes-1.6.4.4.txt[1.6.4.4],
Junio C Hamano7fb6bcf2009-09-13 01:04:23 -070062 link:RelNotes-1.6.4.3.txt[1.6.4.3],
Junio C Hamano82c3e212009-08-29 14:31:01 -070063 link:RelNotes-1.6.4.2.txt[1.6.4.2],
Junio C Hamanod9b97842009-08-21 12:02:25 -070064 link:RelNotes-1.6.4.1.txt[1.6.4.1],
Junio C Hamano0a53e9d2009-07-29 00:32:42 -070065 link:RelNotes-1.6.4.txt[1.6.4].
66
Junio C Hamano441b40d2009-07-29 00:00:56 -070067* link:v1.6.3.4/git.html[documentation for release 1.6.3.4]
Junio C Hamano6096d752009-06-03 22:52:37 -070068
69* release notes for
Junio C Hamano441b40d2009-07-29 00:00:56 -070070 link:RelNotes-1.6.3.4.txt[1.6.3.4],
Junio C Hamanoe16a4772009-06-21 23:50:17 -070071 link:RelNotes-1.6.3.3.txt[1.6.3.3],
Junio C Hamano6096d752009-06-03 22:52:37 -070072 link:RelNotes-1.6.3.2.txt[1.6.3.2],
73 link:RelNotes-1.6.3.1.txt[1.6.3.1],
74 link:RelNotes-1.6.3.txt[1.6.3].
Junio C Hamanoa95148d2009-03-03 23:02:16 -080075
76* release notes for
Junio C Hamanof01f1092009-05-06 17:13:27 -070077 link:RelNotes-1.6.2.5.txt[1.6.2.5],
78 link:RelNotes-1.6.2.4.txt[1.6.2.4],
Junio C Hamanoc965c022009-04-12 17:05:55 -070079 link:RelNotes-1.6.2.3.txt[1.6.2.3],
Nanako Shiraishi54a47492009-04-10 09:34:40 +090080 link:RelNotes-1.6.2.2.txt[1.6.2.2],
Junio C Hamanode769782009-03-15 13:10:10 -070081 link:RelNotes-1.6.2.1.txt[1.6.2.1],
Junio C Hamanoa95148d2009-03-03 23:02:16 -080082 link:RelNotes-1.6.2.txt[1.6.2].
83
Junio C Hamano621f1b42009-02-07 11:06:34 -080084* link:v1.6.1.3/git.html[documentation for release 1.6.1.3]
Junio C Hamano8104ebf2008-12-24 19:41:08 -080085
86* release notes for
Junio C Hamano621f1b42009-02-07 11:06:34 -080087 link:RelNotes-1.6.1.3.txt[1.6.1.3],
88 link:RelNotes-1.6.1.2.txt[1.6.1.2],
Junio C Hamanoc42b1ad2009-01-25 16:30:13 -080089 link:RelNotes-1.6.1.1.txt[1.6.1.1],
Junio C Hamano8104ebf2008-12-24 19:41:08 -080090 link:RelNotes-1.6.1.txt[1.6.1].
91
Junio C Hamanoefe05b02008-12-19 19:32:29 -080092* link:v1.6.0.6/git.html[documentation for release 1.6.0.6]
Junio C Hamanoea02eef2008-08-17 11:42:10 -070093
94* release notes for
Junio C Hamanoefe05b02008-12-19 19:32:29 -080095 link:RelNotes-1.6.0.6.txt[1.6.0.6],
Junio C Hamanof371d3e2008-12-07 17:34:14 -080096 link:RelNotes-1.6.0.5.txt[1.6.0.5],
Junio C Hamano171d7662008-11-12 15:04:54 -080097 link:RelNotes-1.6.0.4.txt[1.6.0.4],
98 link:RelNotes-1.6.0.3.txt[1.6.0.3],
Junio C Hamano97a7a822008-09-12 16:18:47 -070099 link:RelNotes-1.6.0.2.txt[1.6.0.2],
100 link:RelNotes-1.6.0.1.txt[1.6.0.1],
Junio C Hamanoea02eef2008-08-17 11:42:10 -0700101 link:RelNotes-1.6.0.txt[1.6.0].
102
Junio C Hamanoefe05b02008-12-19 19:32:29 -0800103* link:v1.5.6.6/git.html[documentation for release 1.5.6.6]
Junio C Hamanoe449f102008-06-18 13:09:43 -0700104
105* release notes for
Junio C Hamanoefe05b02008-12-19 19:32:29 -0800106 link:RelNotes-1.5.6.6.txt[1.5.6.6],
Junio C Hamano781c18342008-08-06 12:04:06 -0700107 link:RelNotes-1.5.6.5.txt[1.5.6.5],
Junio C Hamano09651dd2008-07-19 15:52:12 -0700108 link:RelNotes-1.5.6.4.txt[1.5.6.4],
109 link:RelNotes-1.5.6.3.txt[1.5.6.3],
110 link:RelNotes-1.5.6.2.txt[1.5.6.2],
111 link:RelNotes-1.5.6.1.txt[1.5.6.1],
Junio C Hamanoe6361062008-06-25 17:09:40 -0700112 link:RelNotes-1.5.6.txt[1.5.6].
Junio C Hamanoe449f102008-06-18 13:09:43 -0700113
Junio C Hamanoefe05b02008-12-19 19:32:29 -0800114* link:v1.5.5.6/git.html[documentation for release 1.5.5.6]
Junio C Hamano1d2375d2008-04-07 21:57:43 -0700115
116* release notes for
Junio C Hamanoefe05b02008-12-19 19:32:29 -0800117 link:RelNotes-1.5.5.6.txt[1.5.5.6],
118 link:RelNotes-1.5.5.5.txt[1.5.5.5],
Junio C Hamano7064ca52008-06-07 11:45:48 -0700119 link:RelNotes-1.5.5.4.txt[1.5.5.4],
Junio C Hamano28bc3022008-05-27 22:20:53 -0700120 link:RelNotes-1.5.5.3.txt[1.5.5.3],
Junio C Hamano2d3922d2008-05-25 21:14:09 -0700121 link:RelNotes-1.5.5.2.txt[1.5.5.2],
Junio C Hamano66aaa2f2008-04-20 11:36:53 -0700122 link:RelNotes-1.5.5.1.txt[1.5.5.1],
Junio C Hamano1d2375d2008-04-07 21:57:43 -0700123 link:RelNotes-1.5.5.txt[1.5.5].
124
Junio C Hamanoefe05b02008-12-19 19:32:29 -0800125* link:v1.5.4.7/git.html[documentation for release 1.5.4.7]
Junio C Hamano6ce8e442008-02-01 20:40:30 -0800126
127* release notes for
Junio C Hamanoefe05b02008-12-19 19:32:29 -0800128 link:RelNotes-1.5.4.7.txt[1.5.4.7],
129 link:RelNotes-1.5.4.6.txt[1.5.4.6],
Junio C Hamano803d5152008-03-27 20:43:51 -0700130 link:RelNotes-1.5.4.5.txt[1.5.4.5],
Junio C Hamanoad416ed2008-03-08 20:07:49 -0800131 link:RelNotes-1.5.4.4.txt[1.5.4.4],
Junio C Hamano923d44a2008-02-23 11:49:34 -0800132 link:RelNotes-1.5.4.3.txt[1.5.4.3],
Junio C Hamanocf5c51e2008-02-17 01:18:54 -0800133 link:RelNotes-1.5.4.2.txt[1.5.4.2],
Junio C Hamanoecb879f2008-02-11 19:21:23 -0800134 link:RelNotes-1.5.4.1.txt[1.5.4.1],
Junio C Hamano6ce8e442008-02-01 20:40:30 -0800135 link:RelNotes-1.5.4.txt[1.5.4].
136
Junio C Hamanoe708af62008-01-07 23:39:02 -0800137* link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
Junio C Hamano5587cac2007-09-02 15:16:44 -0700138
139* release notes for
Junio C Hamanoe708af62008-01-07 23:39:02 -0800140 link:RelNotes-1.5.3.8.txt[1.5.3.8],
Junio C Hamanob52e9852007-12-01 12:48:19 -0800141 link:RelNotes-1.5.3.7.txt[1.5.3.7],
Junio C Hamano4a44b9e2007-11-18 15:15:47 -0800142 link:RelNotes-1.5.3.6.txt[1.5.3.6],
Junio C Hamanoafc05f92007-10-31 14:13:25 -0700143 link:RelNotes-1.5.3.5.txt[1.5.3.5],
Junio C Hamano58ba4f62007-10-04 01:35:01 -0700144 link:RelNotes-1.5.3.4.txt[1.5.3.4],
Junio C Hamano326df262007-09-30 17:32:25 -0700145 link:RelNotes-1.5.3.3.txt[1.5.3.3],
Junio C Hamano077d6f72007-09-19 03:21:35 -0700146 link:RelNotes-1.5.3.2.txt[1.5.3.2],
Junio C Hamano8d863c92007-10-23 12:10:55 -0700147 link:RelNotes-1.5.3.1.txt[1.5.3.1],
148 link:RelNotes-1.5.3.txt[1.5.3].
Junio C Hamanob6e4db62007-05-18 17:28:24 -0700149
Junio C Hamanoe6361062008-06-25 17:09:40 -0700150* link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
151
Junio C Hamanoaba170c2007-05-20 00:30:39 -0700152* release notes for
Junio C Hamanoda899de2007-08-15 16:59:27 -0700153 link:RelNotes-1.5.2.5.txt[1.5.2.5],
Junio C Hamanobaafd6e2007-07-12 14:17:26 -0700154 link:RelNotes-1.5.2.4.txt[1.5.2.4],
Junio C Hamano444649e2007-07-02 01:14:00 -0700155 link:RelNotes-1.5.2.3.txt[1.5.2.3],
Junio C Hamano3e48af32007-06-16 09:10:18 -0700156 link:RelNotes-1.5.2.2.txt[1.5.2.2],
157 link:RelNotes-1.5.2.1.txt[1.5.2.1],
Junio C Hamanoaba170c2007-05-20 00:30:39 -0700158 link:RelNotes-1.5.2.txt[1.5.2].
159
160* link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
161
162* release notes for
163 link:RelNotes-1.5.1.6.txt[1.5.1.6],
164 link:RelNotes-1.5.1.5.txt[1.5.1.5],
Junio C Hamano2ff3f612007-05-18 21:43:13 -0700165 link:RelNotes-1.5.1.4.txt[1.5.1.4],
166 link:RelNotes-1.5.1.3.txt[1.5.1.3],
167 link:RelNotes-1.5.1.2.txt[1.5.1.2],
168 link:RelNotes-1.5.1.1.txt[1.5.1.1],
169 link:RelNotes-1.5.1.txt[1.5.1].
Junio C Hamano467592e2007-05-08 23:47:35 -0700170
Junio C Hamano2ff3f612007-05-18 21:43:13 -0700171* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
Junio C Hamano467592e2007-05-08 23:47:35 -0700172
Junio C Hamanoaba170c2007-05-20 00:30:39 -0700173* release notes for
174 link:RelNotes-1.5.0.7.txt[1.5.0.7],
Junio C Hamano2ff3f612007-05-18 21:43:13 -0700175 link:RelNotes-1.5.0.6.txt[1.5.0.6],
176 link:RelNotes-1.5.0.5.txt[1.5.0.5],
177 link:RelNotes-1.5.0.3.txt[1.5.0.3],
178 link:RelNotes-1.5.0.2.txt[1.5.0.2],
179 link:RelNotes-1.5.0.1.txt[1.5.0.1],
180 link:RelNotes-1.5.0.txt[1.5.0].
Junio C Hamanofdd3e7d2007-04-21 23:51:27 -0700181
Junio C Hamano2ff3f612007-05-18 21:43:13 -0700182* documentation for release link:v1.4.4.4/git.html[1.4.4.4],
183 link:v1.3.3/git.html[1.3.3],
184 link:v1.2.6/git.html[1.2.6],
185 link:v1.0.13/git.html[1.0.13].
Junio C Hamano26cfcfb2007-02-13 15:15:05 -0800186
187============
188
189endif::stalenotes[]
190
Andreas Ericssoncb22bc42005-11-16 00:31:25 +0100191OPTIONS
192-------
193--version::
Fredrik Kuivinena87cd022006-03-09 17:24:19 +0100194 Prints the git suite version that the 'git' program came from.
David Greaves2cf565c2005-05-10 22:32:30 +0100195
Andreas Ericssoncb22bc42005-11-16 00:31:25 +0100196--help::
Fredrik Kuivinena87cd022006-03-09 17:24:19 +0100197 Prints the synopsis and a list of the most commonly used
Christian Couder0f6f1952007-12-04 06:44:29 +0100198 commands. If the option '--all' or '-a' is given then all
199 available commands are printed. If a git command is named this
200 option will bring up the manual page for that command.
Christian Couder45533d22007-12-04 06:44:29 +0100201+
202Other options are available to control how the manual page is
Dan McGee5162e692007-12-29 00:20:38 -0600203displayed. See linkgit:git-help[1] for more information,
Jonathan Niederdb5d6662008-07-03 01:06:23 -0500204because `git --help ...` is converted internally into `git
205help ...`.
Andreas Ericssoncb22bc42005-11-16 00:31:25 +0100206
207--exec-path::
Fredrik Kuivinena87cd022006-03-09 17:24:19 +0100208 Path to wherever your core git programs are installed.
Andreas Ericssoncb22bc42005-11-16 00:31:25 +0100209 This can also be controlled by setting the GIT_EXEC_PATH
Jonathan Nieder56992f72008-07-03 00:08:12 -0500210 environment variable. If no path is given, 'git' will print
Andreas Ericssoncb22bc42005-11-16 00:31:25 +0100211 the current setting and then exit.
212
Markus Heidelberg89a56bf2009-04-05 04:15:16 +0200213--html-path::
214 Print the path to wherever your git HTML documentation is installed
215 and exit.
216
Stephan Beyer32402402008-06-08 03:36:09 +0200217-p::
218--paginate::
Johannes Schindelin6acbcb92006-07-25 20:24:22 +0200219 Pipe all output into 'less' (or if set, $PAGER).
220
Matthieu Moy463a8492007-08-19 19:24:36 +0200221--no-pager::
222 Do not pipe git output into a pager.
223
Johannes Schindelin6acbcb92006-07-25 20:24:22 +0200224--git-dir=<path>::
225 Set the path to the repository. This can also be controlled by
Liu Yubao302cc112008-04-29 04:09:20 +0800226 setting the GIT_DIR environment variable. It can be an absolute
227 path or relative path to current working directory.
Johannes Schindelin6acbcb92006-07-25 20:24:22 +0200228
Matthias Lederhofer892c41b2007-06-06 09:10:42 +0200229--work-tree=<path>::
230 Set the path to the working tree. The value will not be
231 used in combination with repositories found automatically in
232 a .git directory (i.e. $GIT_DIR is not set).
233 This can also be controlled by setting the GIT_WORK_TREE
234 environment variable and the core.worktree configuration
Liu Yubao302cc112008-04-29 04:09:20 +0800235 variable. It can be an absolute path or relative path to
236 the directory specified by --git-dir or GIT_DIR.
237 Note: If --git-dir or GIT_DIR are specified but none of
238 --work-tree, GIT_WORK_TREE and core.worktree is specified,
239 the current working directory is regarded as the top directory
240 of your working tree.
Matthias Lederhofer892c41b2007-06-06 09:10:42 +0200241
Johannes Schindelin6acbcb92006-07-25 20:24:22 +0200242--bare::
Junio C Hamano9277d602007-08-27 22:41:23 -0700243 Treat the repository as a bare repository. If GIT_DIR
244 environment is not set, it is set to the current working
245 directory.
246
Christian Couderb0fa7ab2009-10-12 22:30:32 +0200247--no-replace-objects::
248 Do not use replacement refs to replace git objects. See
249 linkgit:git-replace[1] for more information.
250
Junio C Hamano0d6a8732005-08-23 21:18:49 -0700251
J. Bruce Fields23091e92006-04-02 17:54:34 -0400252FURTHER DOCUMENTATION
253---------------------
Junio C Hamano9755afb2005-12-13 02:38:24 -0800254
J. Bruce Fields23091e92006-04-02 17:54:34 -0400255See the references above to get started using git. The following is
256probably more detail than necessary for a first-time user.
Junio C Hamano9755afb2005-12-13 02:38:24 -0800257
J. Bruce Fields40dac512007-09-03 00:01:19 -0400258The link:user-manual.html#git-concepts[git concepts chapter of the
Jonathan Nieder6998e4d2008-06-30 17:01:21 -0500259user-manual] and linkgit:gitcore-tutorial[7] both provide
J. Bruce Fields40dac512007-09-03 00:01:19 -0400260introductions to the underlying git architecture.
Junio C Hamano9755afb2005-12-13 02:38:24 -0800261
Thomas Rast801a0112009-06-06 15:11:07 +0200262See linkgit:gitworkflows[7] for an overview of recommended workflows.
263
J. Bruce Fields23091e92006-04-02 17:54:34 -0400264See also the link:howto-index.html[howto] documents for some useful
265examples.
Junio C Hamano9755afb2005-12-13 02:38:24 -0800266
Jonathan Nieder6998e4d2008-06-30 17:01:21 -0500267The internals are documented in the
268link:technical/api-index.html[GIT API documentation].
Junio C Hamano530e7412007-11-24 23:48:04 -0800269
J. Bruce Fields23091e92006-04-02 17:54:34 -0400270GIT COMMANDS
271------------
Junio C Hamano8db93072005-08-30 13:51:01 -0700272
J. Bruce Fields23091e92006-04-02 17:54:34 -0400273We divide git into high level ("porcelain") commands and low level
274("plumbing") commands.
Junio C Hamanoe6fc2342005-08-25 00:28:18 -0700275
J. Bruce Fields23091e92006-04-02 17:54:34 -0400276High-level commands (porcelain)
277-------------------------------
278
279We separate the porcelain commands into the main commands and some
280ancillary user utilities.
281
282Main porcelain commands
283~~~~~~~~~~~~~~~~~~~~~~~
Junio C Hamano905197d2005-08-26 21:33:46 -0700284
Junio C Hamano377e8132007-01-18 15:03:13 -0800285include::cmds-mainporcelain.txt[]
Junio C Hamanoe31bb3b2005-08-15 15:48:47 -0700286
Yasushi SHOJI90933ef2005-08-16 00:23:06 +0900287Ancillary Commands
J. Bruce Fields23091e92006-04-02 17:54:34 -0400288~~~~~~~~~~~~~~~~~~
David Greaves204ee6a2005-05-10 22:32:37 +0100289Manipulators:
290
Junio C Hamano377e8132007-01-18 15:03:13 -0800291include::cmds-ancillarymanipulators.txt[]
Junio C Hamano7fc9d692005-08-23 01:49:47 -0700292
Junio C Hamanof85a4192005-08-29 17:21:06 -0700293Interrogators:
Junio C Hamano7fc9d692005-08-23 01:49:47 -0700294
Junio C Hamano377e8132007-01-18 15:03:13 -0800295include::cmds-ancillaryinterrogators.txt[]
Junio C Hamano35ef3a42005-09-07 23:04:52 -0700296
Junio C Hamano89bf2072007-01-18 22:32:38 -0800297
298Interacting with Others
299~~~~~~~~~~~~~~~~~~~~~~~
300
301These commands are to interact with foreign SCM and with other
302people via patch over e-mail.
303
304include::cmds-foreignscminterface.txt[]
305
306
Robin Rosenbergb1f33d62006-10-29 21:09:48 +0100307Low-level commands (plumbing)
308-----------------------------
309
310Although git includes its
311own porcelain layer, its low-level commands are sufficient to support
312development of alternative porcelains. Developers of such porcelains
Dan McGee5162e692007-12-29 00:20:38 -0600313might start by reading about linkgit:git-update-index[1] and
314linkgit:git-read-tree[1].
Robin Rosenbergb1f33d62006-10-29 21:09:48 +0100315
Junio C Hamano89bf2072007-01-18 22:32:38 -0800316The interface (input, output, set of options and the semantics)
317to these low-level commands are meant to be a lot more stable
318than Porcelain level commands, because these commands are
319primarily for scripted use. The interface to Porcelain commands
320on the other hand are subject to change in order to improve the
321end user experience.
322
323The following description divides
324the low-level commands into commands that manipulate objects (in
Robin Rosenbergb1f33d62006-10-29 21:09:48 +0100325the repository, index, and working tree), commands that interrogate and
326compare objects, and commands that move objects and references between
327repositories.
328
Junio C Hamano89bf2072007-01-18 22:32:38 -0800329
Robin Rosenbergb1f33d62006-10-29 21:09:48 +0100330Manipulation commands
331~~~~~~~~~~~~~~~~~~~~~
Robin Rosenbergb1f33d62006-10-29 21:09:48 +0100332
Junio C Hamano377e8132007-01-18 15:03:13 -0800333include::cmds-plumbingmanipulators.txt[]
Robin Rosenbergb1f33d62006-10-29 21:09:48 +0100334
335
336Interrogation commands
337~~~~~~~~~~~~~~~~~~~~~~
338
Junio C Hamano377e8132007-01-18 15:03:13 -0800339include::cmds-plumbinginterrogators.txt[]
Robin Rosenbergb1f33d62006-10-29 21:09:48 +0100340
341In general, the interrogate commands do not touch the files in
342the working tree.
343
344
345Synching repositories
346~~~~~~~~~~~~~~~~~~~~~
347
Junio C Hamano377e8132007-01-18 15:03:13 -0800348include::cmds-synchingrepositories.txt[]
Robin Rosenbergb1f33d62006-10-29 21:09:48 +0100349
Ori Avtalion57f6ec02009-08-07 17:24:21 +0300350The following are helper commands used by the above; end users
Junio C Hamano89bf2072007-01-18 22:32:38 -0800351typically do not use them directly.
352
353include::cmds-synchelpers.txt[]
354
355
356Internal helper commands
357~~~~~~~~~~~~~~~~~~~~~~~~
358
359These are internal helper commands used by other commands; end
360users typically do not use them directly.
361
362include::cmds-purehelpers.txt[]
363
Robin Rosenbergb1f33d62006-10-29 21:09:48 +0100364
Junio C Hamano5773c9f2005-10-29 14:32:56 -0700365Configuration Mechanism
366-----------------------
367
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800368Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
Junio C Hamano5773c9f2005-10-29 14:32:56 -0700369is used to hold per-repository configuration options. It is a
Pavel Roskinaddf88e2006-07-09 03:44:30 -0400370simple text file modeled after `.ini` format familiar to some
Junio C Hamano5773c9f2005-10-29 14:32:56 -0700371people. Here is an example:
372
373------------
374#
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800375# A '#' or ';' character indicates a comment.
Junio C Hamano5773c9f2005-10-29 14:32:56 -0700376#
377
378; core variables
379[core]
380 ; Don't trust file modes
381 filemode = false
382
383; user identity
384[user]
385 name = "Junio C Hamano"
386 email = "junkio@twinsun.com"
387
388------------
389
390Various commands read from the configuration file and adjust
391their operation accordingly.
392
393
David Greaves6c84e2e2005-05-22 18:44:16 +0100394Identifier Terminology
David Greaves2cf565c2005-05-10 22:32:30 +0100395----------------------
396<object>::
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800397 Indicates the object name for any type of object.
David Greaves2cf565c2005-05-10 22:32:30 +0100398
399<blob>::
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800400 Indicates a blob object name.
David Greaves2cf565c2005-05-10 22:32:30 +0100401
402<tree>::
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800403 Indicates a tree object name.
David Greaves2cf565c2005-05-10 22:32:30 +0100404
405<commit>::
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800406 Indicates a commit object name.
David Greaves2cf565c2005-05-10 22:32:30 +0100407
408<tree-ish>::
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800409 Indicates a tree, commit or tag object name. A
David Greaves6c84e2e2005-05-22 18:44:16 +0100410 command that takes a <tree-ish> argument ultimately wants to
411 operate on a <tree> object but automatically dereferences
412 <commit> and <tag> objects that point at a <tree>.
David Greaves2cf565c2005-05-10 22:32:30 +0100413
Theodore Ts'o043d7602007-03-05 14:46:05 -0500414<commit-ish>::
415 Indicates a commit or tag object name. A
416 command that takes a <commit-ish> argument ultimately wants to
417 operate on a <commit> object but automatically dereferences
418 <tag> objects that point at a <commit>.
419
David Greaves2cf565c2005-05-10 22:32:30 +0100420<type>::
421 Indicates that an object type is required.
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800422 Currently one of: `blob`, `tree`, `commit`, or `tag`.
David Greaves2cf565c2005-05-10 22:32:30 +0100423
424<file>::
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800425 Indicates a filename - almost always relative to the
426 root of the tree structure `GIT_INDEX_FILE` describes.
David Greaves2cf565c2005-05-10 22:32:30 +0100427
David Greavesc1bdacf2005-05-10 22:32:38 +0100428Symbolic Identifiers
429--------------------
Yasushi SHOJI90933ef2005-08-16 00:23:06 +0900430Any git command accepting any <object> can also use the following
David Greaves6c84e2e2005-05-22 18:44:16 +0100431symbolic notation:
David Greavesc1bdacf2005-05-10 22:32:38 +0100432
433HEAD::
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800434 indicates the head of the current branch (i.e. the
435 contents of `$GIT_DIR/HEAD`).
436
David Greavesc1bdacf2005-05-10 22:32:38 +0100437<tag>::
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800438 a valid tag 'name'
439 (i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).
440
David Greavesc1bdacf2005-05-10 22:32:38 +0100441<head>::
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800442 a valid head 'name'
443 (i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
444
Junio C Hamanod47107d2006-10-25 11:33:08 -0700445For a more complete list of ways to spell object names, see
Dan McGee5162e692007-12-29 00:20:38 -0600446"SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1].
Junio C Hamanod47107d2006-10-25 11:33:08 -0700447
David Greavesc1bdacf2005-05-10 22:32:38 +0100448
449File/Directory Structure
450------------------------
David Greavesc1bdacf2005-05-10 22:32:38 +0100451
Jonathan Nieder6998e4d2008-06-30 17:01:21 -0500452Please see the linkgit:gitrepository-layout[5] document.
David Greavesc1bdacf2005-05-10 22:32:38 +0100453
Jonathan Nieder6998e4d2008-06-30 17:01:21 -0500454Read linkgit:githooks[5] for more details about each hook.
Jon Loeliger6250ad12006-03-24 21:21:07 -0600455
David Greavesc1bdacf2005-05-10 22:32:38 +0100456Higher level SCMs may provide and manage additional information in the
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800457`$GIT_DIR`.
David Greavesc1bdacf2005-05-10 22:32:38 +0100458
Junio C Hamanoa1d4aa72005-09-01 16:56:13 -0700459
David Greaves2cf565c2005-05-10 22:32:30 +0100460Terminology
461-----------
Jonathan Nieder6998e4d2008-06-30 17:01:21 -0500462Please see linkgit:gitglossary[7].
David Greaves2cf565c2005-05-10 22:32:30 +0100463
464
465Environment Variables
466---------------------
467Various git commands use the following environment variables:
468
David Greavesc1bdacf2005-05-10 22:32:38 +0100469The git Repository
470~~~~~~~~~~~~~~~~~~
471These environment variables apply to 'all' core git commands. Nb: it
472is worth noting that they may be used/overridden by SCMS sitting above
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800473git so take care if using Cogito etc.
David Greaves2cf565c2005-05-10 22:32:30 +0100474
David Greavesc1bdacf2005-05-10 22:32:38 +0100475'GIT_INDEX_FILE'::
476 This environment allows the specification of an alternate
Lukas_Sandström5f3aa192005-11-11 02:12:27 +0100477 index file. If not specified, the default of `$GIT_DIR/index`
478 is used.
David Greavesc1bdacf2005-05-10 22:32:38 +0100479
480'GIT_OBJECT_DIRECTORY'::
481 If the object storage directory is specified via this
482 environment variable then the sha1 directories are created
483 underneath - otherwise the default `$GIT_DIR/objects`
484 directory is used.
485
486'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
487 Due to the immutable nature of git objects, old objects can be
488 archived into shared, read-only directories. This variable
Johannes Sixt80ba0742007-12-03 21:55:57 +0100489 specifies a ":" separated (on Windows ";" separated) list
490 of git object directories which can be used to search for git
491 objects. New objects will not be written to these directories.
David Greavesc1bdacf2005-05-10 22:32:38 +0100492
493'GIT_DIR'::
Junio C Hamano2fa090b2005-12-07 16:05:21 -0800494 If the 'GIT_DIR' environment variable is set then it
495 specifies a path to use instead of the default `.git`
496 for the base of the repository.
David Greavesc1bdacf2005-05-10 22:32:38 +0100497
Matthias Lederhofer892c41b2007-06-06 09:10:42 +0200498'GIT_WORK_TREE'::
499 Set the path to the working tree. The value will not be
500 used in combination with repositories found automatically in
501 a .git directory (i.e. $GIT_DIR is not set).
502 This can also be controlled by the '--work-tree' command line
503 option and the core.worktree configuration variable.
504
David Reiss0454dd92008-05-19 23:49:26 -0700505'GIT_CEILING_DIRECTORIES'::
506 This should be a colon-separated list of absolute paths.
507 If set, it is a list of directories that git should not chdir
508 up into while looking for a repository directory.
509 It will not exclude the current working directory or
510 a GIT_DIR set on the command line or in the environment.
511 (Useful for excluding slow-loading network directories.)
512
David Greavesc1bdacf2005-05-10 22:32:38 +0100513git Commits
514~~~~~~~~~~~
515'GIT_AUTHOR_NAME'::
516'GIT_AUTHOR_EMAIL'::
517'GIT_AUTHOR_DATE'::
518'GIT_COMMITTER_NAME'::
519'GIT_COMMITTER_EMAIL'::
Josh Triplett4e58bf92007-04-28 18:40:12 -0700520'GIT_COMMITTER_DATE'::
Josh Triplett28a94f82007-04-28 18:40:28 -0700521'EMAIL'::
Dan McGee5162e692007-12-29 00:20:38 -0600522 see linkgit:git-commit-tree[1]
David Greavesc1bdacf2005-05-10 22:32:38 +0100523
524git Diffs
525~~~~~~~~~
Junio C Hamanod81ed1b2005-05-10 20:54:57 -0700526'GIT_DIFF_OPTS'::
Seanfde97d82006-11-27 14:37:43 -0500527 Only valid setting is "--unified=??" or "-u??" to set the
528 number of context lines shown when a unified diff is created.
529 This takes precedence over any "-U" or "--unified" option
530 value passed on the git diff command line.
531
Junio C Hamanod81ed1b2005-05-10 20:54:57 -0700532'GIT_EXTERNAL_DIFF'::
Seanfde97d82006-11-27 14:37:43 -0500533 When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
534 program named by it is called, instead of the diff invocation
535 described above. For a path that is added, removed, or modified,
536 'GIT_EXTERNAL_DIFF' is called with 7 parameters:
537
538 path old-file old-hex old-mode new-file new-hex new-mode
539+
540where:
541
542 <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
543 contents of <old|new>,
544 <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
545 <old|new>-mode:: are the octal representation of the file modes.
546
547+
548The file parameters can point at the user's working file
549(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
550when a new file is added), or a temporary file (e.g. `old-file` in the
551index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the
552temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
553+
554For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
555parameter, <path>.
David Greaves2cf565c2005-05-10 22:32:30 +0100556
Matthias Lederhofer575ba9d2006-06-25 15:56:18 +0200557other
558~~~~~
Jakub Narebskidbddb712007-07-13 01:54:06 +0200559'GIT_MERGE_VERBOSITY'::
560 A number controlling the amount of output shown by
561 the recursive merge strategy. Overrides merge.verbosity.
Dan McGee5162e692007-12-29 00:20:38 -0600562 See linkgit:git-merge[1]
Jakub Narebskidbddb712007-07-13 01:54:06 +0200563
Matthias Lederhoferc27d2052006-07-31 15:27:00 +0200564'GIT_PAGER'::
Steven Grimma7738c72007-07-19 03:43:51 -0700565 This environment variable overrides `$PAGER`. If it is set
566 to an empty string or to the value "cat", git will not launch
Jonathan Niederab54cd62008-08-24 00:28:32 -0500567 a pager. See also the `core.pager` option in
568 linkgit:git-config[1].
Matthias Lederhoferc27d2052006-07-31 15:27:00 +0200569
Shawn O. Pearced5538b42007-08-04 02:06:52 -0400570'GIT_SSH'::
Jonathan Niederba020ef2008-07-03 00:41:41 -0500571 If this environment variable is set then 'git-fetch'
572 and 'git-push' will use this command instead
Jonathan Nieder2fd02c92008-07-03 00:55:07 -0500573 of 'ssh' when they need to connect to a remote system.
Jonathan Nieder483bc4f2008-06-30 13:56:34 -0500574 The '$GIT_SSH' command will be given exactly two arguments:
Shawn O. Pearced5538b42007-08-04 02:06:52 -0400575 the 'username@host' (or just 'host') from the URL and the
576 shell command to execute on that remote system.
577+
578To pass options to the program that you want to list in GIT_SSH
579you will need to wrap the program and options into a shell script,
580then set GIT_SSH to refer to the shell script.
581+
582Usually it is easier to configure any desired options through your
583personal `.ssh/config` file. Please consult your ssh documentation
584for further details.
585
Theodore Ts'o06f59e92007-06-29 13:40:46 -0400586'GIT_FLUSH'::
587 If this environment variable is set to "1", then commands such
Jonathan Niederba020ef2008-07-03 00:41:41 -0500588 as 'git-blame' (in incremental mode), 'git-rev-list', 'git-log',
589 and 'git-whatchanged' will force a flush of the output stream
Theodore Ts'o06f59e92007-06-29 13:40:46 -0400590 after each commit-oriented record have been flushed. If this
591 variable is set to "0", the output of these commands will be done
592 using completely buffered I/O. If this environment variable is
593 not set, git will choose buffered or record-oriented flushing
594 based on whether stdout appears to be redirected to a file or not.
595
Matthias Lederhofer575ba9d2006-06-25 15:56:18 +0200596'GIT_TRACE'::
Christian Couder2886bdb2006-09-03 17:32:24 +0200597 If this variable is set to "1", "2" or "true" (comparison
598 is case insensitive), git will print `trace:` messages on
Matthias Lederhofer575ba9d2006-06-25 15:56:18 +0200599 stderr telling about alias expansion, built-in command
600 execution and external command execution.
Christian Couder2886bdb2006-09-03 17:32:24 +0200601 If this variable is set to an integer value greater than 1
602 and lower than 10 (strictly) then git will interpret this
603 value as an open file descriptor and will try to write the
604 trace messages into this file descriptor.
605 Alternatively, if this variable is set to an absolute path
606 (starting with a '/' character), git will interpret this
607 as a file path and will try to write the trace messages
608 into it.
Matthias Lederhofer575ba9d2006-06-25 15:56:18 +0200609
Junio C Hamano8db93072005-08-30 13:51:01 -0700610Discussion[[Discussion]]
611------------------------
J. Bruce Fields40dac512007-09-03 00:01:19 -0400612
613More detail on the following is available from the
614link:user-manual.html#git-concepts[git concepts chapter of the
Jonathan Nieder6998e4d2008-06-30 17:01:21 -0500615user-manual] and linkgit:gitcore-tutorial[7].
J. Bruce Fields40dac512007-09-03 00:01:19 -0400616
617A git project normally consists of a working directory with a ".git"
618subdirectory at the top level. The .git directory contains, among other
619things, a compressed object database representing the complete history
620of the project, an "index" file which links that history to the current
621contents of the working tree, and named pointers into that history such
622as tags and branch heads.
623
624The object database contains objects of three main types: blobs, which
625hold file data; trees, which point to blobs and other trees to build up
Ralf Wildenhues02ff6252007-12-18 07:07:36 +0100626directory hierarchies; and commits, which each reference a single tree
J. Bruce Fields40dac512007-09-03 00:01:19 -0400627and some number of parent commits.
628
629The commit, equivalent to what other systems call a "changeset" or
630"version", represents a step in the project's history, and each parent
631represents an immediately preceding step. Commits with more than one
632parent represent merges of independent lines of development.
633
634All objects are named by the SHA1 hash of their contents, normally
635written as a string of 40 hex digits. Such names are globally unique.
636The entire history leading up to a commit can be vouched for by signing
637just that commit. A fourth object type, the tag, is provided for this
638purpose.
639
640When first created, objects are stored in individual files, but for
641efficiency may later be compressed together into "pack files".
642
643Named pointers called refs mark interesting points in history. A ref
644may contain the SHA1 name of an object or the name of another ref. Refs
645with names beginning `ref/head/` contain the SHA1 name of the most
Ralf Wildenhues02ff6252007-12-18 07:07:36 +0100646recent commit (or "head") of a branch under development. SHA1 names of
J. Bruce Fields40dac512007-09-03 00:01:19 -0400647tags of interest are stored under `ref/tags/`. A special ref named
648`HEAD` contains the name of the currently checked-out branch.
649
650The index file is initialized with a list of all paths and, for each
651path, a blob object and a set of attributes. The blob object represents
652the contents of the file as of the head of the current branch. The
653attributes (last modified time, size, etc.) are taken from the
654corresponding file in the working tree. Subsequent changes to the
655working tree can be found by comparing these attributes. The index may
656be updated with new content, and new commits may be created from the
657content stored in the index.
658
659The index is also capable of storing multiple entries (called "stages")
660for a given pathname. These stages are used to hold the various
661unmerged version of a file when a merge is in progress.
David Greaves6c84e2e2005-05-22 18:44:16 +0100662
Andreas Ericssoncb22bc42005-11-16 00:31:25 +0100663Authors
664-------
Junio C Hamano9755afb2005-12-13 02:38:24 -0800665* git's founding father is Linus Torvalds <torvalds@osdl.org>.
Junio C Hamano947ad2e2007-09-01 04:09:51 -0700666* The current git nurse is Junio C Hamano <gitster@pobox.com>.
Junio C Hamano0240e212007-12-04 00:47:04 -0800667* The git potty was written by Andreas Ericsson <ae@op5.se>.
Junio C Hamano9755afb2005-12-13 02:38:24 -0800668* General upbringing is handled by the git-list <git@vger.kernel.org>.
David Greaves2cf565c2005-05-10 22:32:30 +0100669
670Documentation
671--------------
Junio C Hamano9755afb2005-12-13 02:38:24 -0800672The documentation for git suite was started by David Greaves
673<david@dgreaves.com>, and later enhanced greatly by the
674contributors on the git-list <git@vger.kernel.org>.
David Greaves2cf565c2005-05-10 22:32:30 +0100675
Christian Couder497c8332008-05-29 19:21:46 +0200676SEE ALSO
677--------
678linkgit:gittutorial[7], linkgit:gittutorial-2[7],
Jon Jensen5cbef012008-08-02 15:41:48 -0600679link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7],
Christian Couder497c8332008-05-29 19:21:46 +0200680linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
Thomas Rast801a0112009-06-06 15:11:07 +0200681linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
682linkgit:gitworkflows[7]
Christian Couder497c8332008-05-29 19:21:46 +0200683
David Greaves2cf565c2005-05-10 22:32:30 +0100684GIT
685---
Christian Couder9e1f0a82008-06-06 09:07:32 +0200686Part of the linkgit:git[1] suite