<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.6" />
<title>git(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

pre {
  padding: 0;
  margin: 0;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }


/*
 * xhtml11 specific
 *
 * */

tt {
  font-family: monospace;
  font-size: inherit;
  color: navy;
}

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

.monospaced {
  font-family: monospace;
  font-size: inherit;
  color: navy;
}

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}
</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
git(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>git -
   the stupid content tracker
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>git</em> [--version] [--help] [-C &lt;path&gt;] [-c &lt;name&gt;=&lt;value&gt;]
    [--exec-path[=&lt;path&gt;]] [--html-path] [--man-path] [--info-path]
    [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
    [--git-dir=&lt;path&gt;] [--work-tree=&lt;path&gt;] [--namespace=&lt;name&gt;]
    &lt;command&gt; [&lt;args&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations
and full access to internals.</p></div>
<div class="paragraph"><p>See <a href="gittutorial.html">gittutorial(7)</a> to get started, then see
<a href="everyday.html">Everyday Git</a> for a useful minimum set of
commands.  The <a href="user-manual.html">Git User&#8217;s Manual</a> has a more
in-depth introduction.</p></div>
<div class="paragraph"><p>After you mastered the basic concepts, you can come back to this
page to learn what commands Git offers.  You can learn more about
individual Git commands with "git help command".  <a href="gitcli.html">gitcli(7)</a>
manual page gives you an overview of the command line command syntax.</p></div>
<div class="paragraph"><p>Formatted and hyperlinked version of the latest Git documentation
can be viewed at <tt>http://git-htmldocs.googlecode.com/git/git.html</tt>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--version
</dt>
<dd>
<p>
        Prints the Git suite version that the <em>git</em> program came from.
</p>
</dd>
<dt class="hdlist1">
--help
</dt>
<dd>
<p>
        Prints the synopsis and a list of the most commonly used
        commands. If the option <em>--all</em> or <em>-a</em> is given then all
        available commands are printed. If a Git command is named this
        option will bring up the manual page for that command.
</p>
<div class="paragraph"><p>Other options are available to control how the manual page is
displayed. See <a href="git-help.html">git-help(1)</a> for more information,
because <tt>git --help ...</tt> is converted internally into <tt>git
help ...</tt>.</p></div>
</dd>
<dt class="hdlist1">
-C &lt;path&gt;
</dt>
<dd>
<p>
        Run as if git was started in <em>&lt;path&gt;</em> instead of the current working
        directory.  When multiple <tt>-C</tt> options are given, each subsequent
        non-absolute <tt>-C &lt;path&gt;</tt> is interpreted relative to the preceding <tt>-C
        &lt;path&gt;</tt>.
</p>
<div class="paragraph"><p>This option affects options that expect path name like <tt>--git-dir</tt> and
<tt>--work-tree</tt> in that their interpretations of the path names would be
made relative to the working directory caused by the <tt>-C</tt> option. For
example the following invocations are equivalent:</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>git --git-dir=a.git --work-tree=b -C c status
git --git-dir=c/a.git --work-tree=c/b status</tt></pre>
</div></div>
</dd>
<dt class="hdlist1">
-c &lt;name&gt;=&lt;value&gt;
</dt>
<dd>
<p>
        Pass a configuration parameter to the command. The value
        given will override values from configuration files.
        The &lt;name&gt; is expected in the same format as listed by
        <em>git config</em> (subkeys separated by dots).
</p>
</dd>
<dt class="hdlist1">
--exec-path[=&lt;path&gt;]
</dt>
<dd>
<p>
        Path to wherever your core Git programs are installed.
        This can also be controlled by setting the GIT_EXEC_PATH
        environment variable. If no path is given, <em>git</em> will print
        the current setting and then exit.
</p>
</dd>
<dt class="hdlist1">
--html-path
</dt>
<dd>
<p>
        Print the path, without trailing slash, where Git&#8217;s HTML
        documentation is installed and exit.
</p>
</dd>
<dt class="hdlist1">
--man-path
</dt>
<dd>
<p>
        Print the manpath (see <tt>man(1)</tt>) for the man pages for
        this version of Git and exit.
</p>
</dd>
<dt class="hdlist1">
--info-path
</dt>
<dd>
<p>
        Print the path where the Info files documenting this
        version of Git are installed and exit.
</p>
</dd>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
--paginate
</dt>
<dd>
<p>
        Pipe all output into <em>less</em> (or if set, $PAGER) if standard
        output is a terminal.  This overrides the <tt>pager.&lt;cmd&gt;</tt>
        configuration options (see the "Configuration Mechanism" section
        below).
</p>
</dd>
<dt class="hdlist1">
--no-pager
</dt>
<dd>
<p>
        Do not pipe Git output into a pager.
</p>
</dd>
<dt class="hdlist1">
--git-dir=&lt;path&gt;
</dt>
<dd>
<p>
        Set the path to the repository. This can also be controlled by
        setting the GIT_DIR environment variable. It can be an absolute
        path or relative path to current working directory.
</p>
</dd>
<dt class="hdlist1">
--work-tree=&lt;path&gt;
</dt>
<dd>
<p>
        Set the path to the working tree. It can be an absolute path
        or a path relative to the current working directory.
        This can also be controlled by setting the GIT_WORK_TREE
        environment variable and the core.worktree configuration
        variable (see core.worktree in <a href="git-config.html">git-config(1)</a> for a
        more detailed discussion).
</p>
</dd>
<dt class="hdlist1">
--namespace=&lt;path&gt;
</dt>
<dd>
<p>
        Set the Git namespace.  See <a href="gitnamespaces.html">gitnamespaces(7)</a> for more
        details.  Equivalent to setting the <tt>GIT_NAMESPACE</tt> environment
        variable.
</p>
</dd>
<dt class="hdlist1">
--bare
</dt>
<dd>
<p>
        Treat the repository as a bare repository.  If GIT_DIR
        environment is not set, it is set to the current working
        directory.
</p>
</dd>
<dt class="hdlist1">
--no-replace-objects
</dt>
<dd>
<p>
        Do not use replacement refs to replace Git objects. See
        <a href="git-replace.html">git-replace(1)</a> for more information.
</p>
</dd>
<dt class="hdlist1">
--literal-pathspecs
</dt>
<dd>
<p>
        Treat pathspecs literally (i.e. no globbing, no pathspec magic).
        This is equivalent to setting the <tt>GIT_LITERAL_PATHSPECS</tt> environment
        variable to <tt>1</tt>.
</p>
</dd>
<dt class="hdlist1">
--glob-pathspecs
</dt>
<dd>
<p>
        Add "glob" magic to all pathspec. This is equivalent to setting
        the <tt>GIT_GLOB_PATHSPECS</tt> environment variable to <tt>1</tt>. Disabling
        globbing on individual pathspecs can be done using pathspec
        magic ":(literal)"
</p>
</dd>
<dt class="hdlist1">
--noglob-pathspecs
</dt>
<dd>
<p>
        Add "literal" magic to all pathspec. This is equivalent to setting
        the <tt>GIT_NOGLOB_PATHSPECS</tt> environment variable to <tt>1</tt>. Enabling
        globbing on individual pathspecs can be done using pathspec
        magic ":(glob)"
</p>
</dd>
<dt class="hdlist1">
--icase-pathspecs
</dt>
<dd>
<p>
        Add "icase" magic to all pathspec. This is equivalent to setting
        the <tt>GIT_ICASE_PATHSPECS</tt> environment variable to <tt>1</tt>.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_git_commands">GIT COMMANDS</h2>
<div class="sectionbody">
<div class="paragraph"><p>We divide Git into high level ("porcelain") commands and low level
("plumbing") commands.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_high_level_commands_porcelain">High-level commands (porcelain)</h2>
<div class="sectionbody">
<div class="paragraph"><p>We separate the porcelain commands into the main commands and some
ancillary user utilities.</p></div>
<div class="sect2">
<h3 id="_main_porcelain_commands">Main porcelain commands</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
<a href="git-add.html">git-add(1)</a>
</dt>
<dd>
<p>
        Add file contents to the index.
</p>
</dd>
<dt class="hdlist1">
<a href="git-am.html">git-am(1)</a>
</dt>
<dd>
<p>
        Apply a series of patches from a mailbox.
</p>
</dd>
<dt class="hdlist1">
<a href="git-archive.html">git-archive(1)</a>
</dt>
<dd>
<p>
        Create an archive of files from a named tree.
</p>
</dd>
<dt class="hdlist1">
<a href="git-bisect.html">git-bisect(1)</a>
</dt>
<dd>
<p>
        Find by binary search the change that introduced a bug.
</p>
</dd>
<dt class="hdlist1">
<a href="git-branch.html">git-branch(1)</a>
</dt>
<dd>
<p>
        List, create, or delete branches.
</p>
</dd>
<dt class="hdlist1">
<a href="git-bundle.html">git-bundle(1)</a>
</dt>
<dd>
<p>
        Move objects and refs by archive.
</p>
</dd>
<dt class="hdlist1">
<a href="git-checkout.html">git-checkout(1)</a>
</dt>
<dd>
<p>
        Checkout a branch or paths to the working tree.
</p>
</dd>
<dt class="hdlist1">
<a href="git-cherry-pick.html">git-cherry-pick(1)</a>
</dt>
<dd>
<p>
        Apply the changes introduced by some existing commits.
</p>
</dd>
<dt class="hdlist1">
<a href="git-citool.html">git-citool(1)</a>
</dt>
<dd>
<p>
        Graphical alternative to git-commit.
</p>
</dd>
<dt class="hdlist1">
<a href="git-clean.html">git-clean(1)</a>
</dt>
<dd>
<p>
        Remove untracked files from the working tree.
</p>
</dd>
<dt class="hdlist1">
<a href="git-clone.html">git-clone(1)</a>
</dt>
<dd>
<p>
        Clone a repository into a new directory.
</p>
</dd>
<dt class="hdlist1">
<a href="git-commit.html">git-commit(1)</a>
</dt>
<dd>
<p>
        Record changes to the repository.
</p>
</dd>
<dt class="hdlist1">
<a href="git-describe.html">git-describe(1)</a>
</dt>
<dd>
<p>
        Show the most recent tag that is reachable from a commit.
</p>
</dd>
<dt class="hdlist1">
<a href="git-diff.html">git-diff(1)</a>
</dt>
<dd>
<p>
        Show changes between commits, commit and working tree, etc.
</p>
</dd>
<dt class="hdlist1">
<a href="git-fetch.html">git-fetch(1)</a>
</dt>
<dd>
<p>
        Download objects and refs from another repository.
</p>
</dd>
<dt class="hdlist1">
<a href="git-format-patch.html">git-format-patch(1)</a>
</dt>
<dd>
<p>
        Prepare patches for e-mail submission.
</p>
</dd>
<dt class="hdlist1">
<a href="git-gc.html">git-gc(1)</a>
</dt>
<dd>
<p>
        Cleanup unnecessary files and optimize the local repository.
</p>
</dd>
<dt class="hdlist1">
<a href="git-grep.html">git-grep(1)</a>
</dt>
<dd>
<p>
        Print lines matching a pattern.
</p>
</dd>
<dt class="hdlist1">
<a href="git-gui.html">git-gui(1)</a>
</dt>
<dd>
<p>
        A portable graphical interface to Git.
</p>
</dd>
<dt class="hdlist1">
<a href="git-init.html">git-init(1)</a>
</dt>
<dd>
<p>
        Create an empty Git repository or reinitialize an existing one.
</p>
</dd>
<dt class="hdlist1">
<a href="git-log.html">git-log(1)</a>
</dt>
<dd>
<p>
        Show commit logs.
</p>
</dd>
<dt class="hdlist1">
<a href="git-merge.html">git-merge(1)</a>
</dt>
<dd>
<p>
        Join two or more development histories together.
</p>
</dd>
<dt class="hdlist1">
<a href="git-mv.html">git-mv(1)</a>
</dt>
<dd>
<p>
        Move or rename a file, a directory, or a symlink.
</p>
</dd>
<dt class="hdlist1">
<a href="git-notes.html">git-notes(1)</a>
</dt>
<dd>
<p>
        Add or inspect object notes.
</p>
</dd>
<dt class="hdlist1">
<a href="git-pull.html">git-pull(1)</a>
</dt>
<dd>
<p>
        Fetch from and integrate with another repository or a local branch.
</p>
</dd>
<dt class="hdlist1">
<a href="git-push.html">git-push(1)</a>
</dt>
<dd>
<p>
        Update remote refs along with associated objects.
</p>
</dd>
<dt class="hdlist1">
<a href="git-rebase.html">git-rebase(1)</a>
</dt>
<dd>
<p>
        Forward-port local commits to the updated upstream head.
</p>
</dd>
<dt class="hdlist1">
<a href="git-reset.html">git-reset(1)</a>
</dt>
<dd>
<p>
        Reset current HEAD to the specified state.
</p>
</dd>
<dt class="hdlist1">
<a href="git-revert.html">git-revert(1)</a>
</dt>
<dd>
<p>
        Revert some existing commits.
</p>
</dd>
<dt class="hdlist1">
<a href="git-rm.html">git-rm(1)</a>
</dt>
<dd>
<p>
        Remove files from the working tree and from the index.
</p>
</dd>
<dt class="hdlist1">
<a href="git-shortlog.html">git-shortlog(1)</a>
</dt>
<dd>
<p>
        Summarize <em>git log</em> output.
</p>
</dd>
<dt class="hdlist1">
<a href="git-show.html">git-show(1)</a>
</dt>
<dd>
<p>
        Show various types of objects.
</p>
</dd>
<dt class="hdlist1">
<a href="git-stash.html">git-stash(1)</a>
</dt>
<dd>
<p>
        Stash the changes in a dirty working directory away.
</p>
</dd>
<dt class="hdlist1">
<a href="git-status.html">git-status(1)</a>
</dt>
<dd>
<p>
        Show the working tree status.
</p>
</dd>
<dt class="hdlist1">
<a href="git-submodule.html">git-submodule(1)</a>
</dt>
<dd>
<p>
        Initialize, update or inspect submodules.
</p>
</dd>
<dt class="hdlist1">
<a href="git-tag.html">git-tag(1)</a>
</dt>
<dd>
<p>
        Create, list, delete or verify a tag object signed with GPG.
</p>
</dd>
<dt class="hdlist1">
<a href="gitk.html">gitk(1)</a>
</dt>
<dd>
<p>
        The Git repository browser.
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_ancillary_commands">Ancillary Commands</h3>
<div class="paragraph"><p>Manipulators:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<a href="git-config.html">git-config(1)</a>
</dt>
<dd>
<p>
        Get and set repository or global options.
</p>
</dd>
<dt class="hdlist1">
<a href="git-fast-export.html">git-fast-export(1)</a>
</dt>
<dd>
<p>
        Git data exporter.
</p>
</dd>
<dt class="hdlist1">
<a href="git-fast-import.html">git-fast-import(1)</a>
</dt>
<dd>
<p>
        Backend for fast Git data importers.
</p>
</dd>
<dt class="hdlist1">
<a href="git-filter-branch.html">git-filter-branch(1)</a>
</dt>
<dd>
<p>
        Rewrite branches.
</p>
</dd>
<dt class="hdlist1">
<a href="git-mergetool.html">git-mergetool(1)</a>
</dt>
<dd>
<p>
        Run merge conflict resolution tools to resolve merge conflicts.
</p>
</dd>
<dt class="hdlist1">
<a href="git-pack-refs.html">git-pack-refs(1)</a>
</dt>
<dd>
<p>
        Pack heads and tags for efficient repository access.
</p>
</dd>
<dt class="hdlist1">
<a href="git-prune.html">git-prune(1)</a>
</dt>
<dd>
<p>
        Prune all unreachable objects from the object database.
</p>
</dd>
<dt class="hdlist1">
<a href="git-reflog.html">git-reflog(1)</a>
</dt>
<dd>
<p>
        Manage reflog information.
</p>
</dd>
<dt class="hdlist1">
<a href="git-relink.html">git-relink(1)</a>
</dt>
<dd>
<p>
        Hardlink common objects in local repositories.
</p>
</dd>
<dt class="hdlist1">
<a href="git-remote.html">git-remote(1)</a>
</dt>
<dd>
<p>
        Manage set of tracked repositories.
</p>
</dd>
<dt class="hdlist1">
<a href="git-repack.html">git-repack(1)</a>
</dt>
<dd>
<p>
        Pack unpacked objects in a repository.
</p>
</dd>
<dt class="hdlist1">
<a href="git-replace.html">git-replace(1)</a>
</dt>
<dd>
<p>
        Create, list, delete refs to replace objects.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>Interrogators:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<a href="git-annotate.html">git-annotate(1)</a>
</dt>
<dd>
<p>
        Annotate file lines with commit information.
</p>
</dd>
<dt class="hdlist1">
<a href="git-blame.html">git-blame(1)</a>
</dt>
<dd>
<p>
        Show what revision and author last modified each line of a file.
</p>
</dd>
<dt class="hdlist1">
<a href="git-cherry.html">git-cherry(1)</a>
</dt>
<dd>
<p>
        Find commits yet to be applied to upstream.
</p>
</dd>
<dt class="hdlist1">
<a href="git-count-objects.html">git-count-objects(1)</a>
</dt>
<dd>
<p>
        Count unpacked number of objects and their disk consumption.
</p>
</dd>
<dt class="hdlist1">
<a href="git-difftool.html">git-difftool(1)</a>
</dt>
<dd>
<p>
        Show changes using common diff tools.
</p>
</dd>
<dt class="hdlist1">
<a href="git-fsck.html">git-fsck(1)</a>
</dt>
<dd>
<p>
        Verifies the connectivity and validity of the objects in the database.
</p>
</dd>
<dt class="hdlist1">
<a href="git-get-tar-commit-id.html">git-get-tar-commit-id(1)</a>
</dt>
<dd>
<p>
        Extract commit ID from an archive created using git-archive.
</p>
</dd>
<dt class="hdlist1">
<a href="git-help.html">git-help(1)</a>
</dt>
<dd>
<p>
        Display help information about Git.
</p>
</dd>
<dt class="hdlist1">
<a href="git-instaweb.html">git-instaweb(1)</a>
</dt>
<dd>
<p>
        Instantly browse your working repository in gitweb.
</p>
</dd>
<dt class="hdlist1">
<a href="git-merge-tree.html">git-merge-tree(1)</a>
</dt>
<dd>
<p>
        Show three-way merge without touching index.
</p>
</dd>
<dt class="hdlist1">
<a href="git-rerere.html">git-rerere(1)</a>
</dt>
<dd>
<p>
        Reuse recorded resolution of conflicted merges.
</p>
</dd>
<dt class="hdlist1">
<a href="git-rev-parse.html">git-rev-parse(1)</a>
</dt>
<dd>
<p>
        Pick out and massage parameters.
</p>
</dd>
<dt class="hdlist1">
<a href="git-show-branch.html">git-show-branch(1)</a>
</dt>
<dd>
<p>
        Show branches and their commits.
</p>
</dd>
<dt class="hdlist1">
<a href="git-verify-tag.html">git-verify-tag(1)</a>
</dt>
<dd>
<p>
        Check the GPG signature of tags.
</p>
</dd>
<dt class="hdlist1">
<a href="git-whatchanged.html">git-whatchanged(1)</a>
</dt>
<dd>
<p>
        Show logs with difference each commit introduces.
</p>
</dd>
<dt class="hdlist1">
<a href="gitweb.html">gitweb(1)</a>
</dt>
<dd>
<p>
        Git web interface (web frontend to Git repositories).
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_interacting_with_others">Interacting with Others</h3>
<div class="paragraph"><p>These commands are to interact with foreign SCM and with other
people via patch over e-mail.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<a href="git-archimport.html">git-archimport(1)</a>
</dt>
<dd>
<p>
        Import an Arch repository into Git.
</p>
</dd>
<dt class="hdlist1">
<a href="git-cvsexportcommit.html">git-cvsexportcommit(1)</a>
</dt>
<dd>
<p>
        Export a single commit to a CVS checkout.
</p>
</dd>
<dt class="hdlist1">
<a href="git-cvsimport.html">git-cvsimport(1)</a>
</dt>
<dd>
<p>
        Salvage your data out of another SCM people love to hate.
</p>
</dd>
<dt class="hdlist1">
<a href="git-cvsserver.html">git-cvsserver(1)</a>
</dt>
<dd>
<p>
        A CVS server emulator for Git.
</p>
</dd>
<dt class="hdlist1">
<a href="git-imap-send.html">git-imap-send(1)</a>
</dt>
<dd>
<p>
        Send a collection of patches from stdin to an IMAP folder.
</p>
</dd>
<dt class="hdlist1">
<a href="git-p4.html">git-p4(1)</a>
</dt>
<dd>
<p>
        Import from and submit to Perforce repositories.
</p>
</dd>
<dt class="hdlist1">
<a href="git-quiltimport.html">git-quiltimport(1)</a>
</dt>
<dd>
<p>
        Applies a quilt patchset onto the current branch.
</p>
</dd>
<dt class="hdlist1">
<a href="git-request-pull.html">git-request-pull(1)</a>
</dt>
<dd>
<p>
        Generates a summary of pending changes.
</p>
</dd>
<dt class="hdlist1">
<a href="git-send-email.html">git-send-email(1)</a>
</dt>
<dd>
<p>
        Send a collection of patches as emails.
</p>
</dd>
<dt class="hdlist1">
<a href="git-svn.html">git-svn(1)</a>
</dt>
<dd>
<p>
        Bidirectional operation between a Subversion repository and Git.
</p>
</dd>
</dl></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_low_level_commands_plumbing">Low-level commands (plumbing)</h2>
<div class="sectionbody">
<div class="paragraph"><p>Although Git includes its
own porcelain layer, its low-level commands are sufficient to support
development of alternative porcelains.  Developers of such porcelains
might start by reading about <a href="git-update-index.html">git-update-index(1)</a> and
<a href="git-read-tree.html">git-read-tree(1)</a>.</p></div>
<div class="paragraph"><p>The interface (input, output, set of options and the semantics)
to these low-level commands are meant to be a lot more stable
than Porcelain level commands, because these commands are
primarily for scripted use.  The interface to Porcelain commands
on the other hand are subject to change in order to improve the
end user experience.</p></div>
<div class="paragraph"><p>The following description divides
the low-level commands into commands that manipulate objects (in
the repository, index, and working tree), commands that interrogate and
compare objects, and commands that move objects and references between
repositories.</p></div>
<div class="sect2">
<h3 id="_manipulation_commands">Manipulation commands</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
<a href="git-apply.html">git-apply(1)</a>
</dt>
<dd>
<p>
        Apply a patch to files and/or to the index.
</p>
</dd>
<dt class="hdlist1">
<a href="git-checkout-index.html">git-checkout-index(1)</a>
</dt>
<dd>
<p>
        Copy files from the index to the working tree.
</p>
</dd>
<dt class="hdlist1">
<a href="git-commit-tree.html">git-commit-tree(1)</a>
</dt>
<dd>
<p>
        Create a new commit object.
</p>
</dd>
<dt class="hdlist1">
<a href="git-hash-object.html">git-hash-object(1)</a>
</dt>
<dd>
<p>
        Compute object ID and optionally creates a blob from a file.
</p>
</dd>
<dt class="hdlist1">
<a href="git-index-pack.html">git-index-pack(1)</a>
</dt>
<dd>
<p>
        Build pack index file for an existing packed archive.
</p>
</dd>
<dt class="hdlist1">
<a href="git-merge-file.html">git-merge-file(1)</a>
</dt>
<dd>
<p>
        Run a three-way file merge.
</p>
</dd>
<dt class="hdlist1">
<a href="git-merge-index.html">git-merge-index(1)</a>
</dt>
<dd>
<p>
        Run a merge for files needing merging.
</p>
</dd>
<dt class="hdlist1">
<a href="git-mktag.html">git-mktag(1)</a>
</dt>
<dd>
<p>
        Creates a tag object.
</p>
</dd>
<dt class="hdlist1">
<a href="git-mktree.html">git-mktree(1)</a>
</dt>
<dd>
<p>
        Build a tree-object from ls-tree formatted text.
</p>
</dd>
<dt class="hdlist1">
<a href="git-pack-objects.html">git-pack-objects(1)</a>
</dt>
<dd>
<p>
        Create a packed archive of objects.
</p>
</dd>
<dt class="hdlist1">
<a href="git-prune-packed.html">git-prune-packed(1)</a>
</dt>
<dd>
<p>
        Remove extra objects that are already in pack files.
</p>
</dd>
<dt class="hdlist1">
<a href="git-read-tree.html">git-read-tree(1)</a>
</dt>
<dd>
<p>
        Reads tree information into the index.
</p>
</dd>
<dt class="hdlist1">
<a href="git-symbolic-ref.html">git-symbolic-ref(1)</a>
</dt>
<dd>
<p>
        Read, modify and delete symbolic refs.
</p>
</dd>
<dt class="hdlist1">
<a href="git-unpack-objects.html">git-unpack-objects(1)</a>
</dt>
<dd>
<p>
        Unpack objects from a packed archive.
</p>
</dd>
<dt class="hdlist1">
<a href="git-update-index.html">git-update-index(1)</a>
</dt>
<dd>
<p>
        Register file contents in the working tree to the index.
</p>
</dd>
<dt class="hdlist1">
<a href="git-update-ref.html">git-update-ref(1)</a>
</dt>
<dd>
<p>
        Update the object name stored in a ref safely.
</p>
</dd>
<dt class="hdlist1">
<a href="git-write-tree.html">git-write-tree(1)</a>
</dt>
<dd>
<p>
        Create a tree object from the current index.
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_interrogation_commands">Interrogation commands</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
<a href="git-cat-file.html">git-cat-file(1)</a>
</dt>
<dd>
<p>
        Provide content or type and size information for repository objects.
</p>
</dd>
<dt class="hdlist1">
<a href="git-diff-files.html">git-diff-files(1)</a>
</dt>
<dd>
<p>
        Compares files in the working tree and the index.
</p>
</dd>
<dt class="hdlist1">
<a href="git-diff-index.html">git-diff-index(1)</a>
</dt>
<dd>
<p>
        Compare a tree to the working tree or index.
</p>
</dd>
<dt class="hdlist1">
<a href="git-diff-tree.html">git-diff-tree(1)</a>
</dt>
<dd>
<p>
        Compares the content and mode of blobs found via two tree objects.
</p>
</dd>
<dt class="hdlist1">
<a href="git-for-each-ref.html">git-for-each-ref(1)</a>
</dt>
<dd>
<p>
        Output information on each ref.
</p>
</dd>
<dt class="hdlist1">
<a href="git-ls-files.html">git-ls-files(1)</a>
</dt>
<dd>
<p>
        Show information about files in the index and the working tree.
</p>
</dd>
<dt class="hdlist1">
<a href="git-ls-remote.html">git-ls-remote(1)</a>
</dt>
<dd>
<p>
        List references in a remote repository.
</p>
</dd>
<dt class="hdlist1">
<a href="git-ls-tree.html">git-ls-tree(1)</a>
</dt>
<dd>
<p>
        List the contents of a tree object.
</p>
</dd>
<dt class="hdlist1">
<a href="git-merge-base.html">git-merge-base(1)</a>
</dt>
<dd>
<p>
        Find as good common ancestors as possible for a merge.
</p>
</dd>
<dt class="hdlist1">
<a href="git-name-rev.html">git-name-rev(1)</a>
</dt>
<dd>
<p>
        Find symbolic names for given revs.
</p>
</dd>
<dt class="hdlist1">
<a href="git-pack-redundant.html">git-pack-redundant(1)</a>
</dt>
<dd>
<p>
        Find redundant pack files.
</p>
</dd>
<dt class="hdlist1">
<a href="git-rev-list.html">git-rev-list(1)</a>
</dt>
<dd>
<p>
        Lists commit objects in reverse chronological order.
</p>
</dd>
<dt class="hdlist1">
<a href="git-show-index.html">git-show-index(1)</a>
</dt>
<dd>
<p>
        Show packed archive index.
</p>
</dd>
<dt class="hdlist1">
<a href="git-show-ref.html">git-show-ref(1)</a>
</dt>
<dd>
<p>
        List references in a local repository.
</p>
</dd>
<dt class="hdlist1">
<a href="git-unpack-file.html">git-unpack-file(1)</a>
</dt>
<dd>
<p>
        Creates a temporary file with a blob&#8217;s contents.
</p>
</dd>
<dt class="hdlist1">
<a href="git-var.html">git-var(1)</a>
</dt>
<dd>
<p>
        Show a Git logical variable.
</p>
</dd>
<dt class="hdlist1">
<a href="git-verify-pack.html">git-verify-pack(1)</a>
</dt>
<dd>
<p>
        Validate packed Git archive files.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>In general, the interrogate commands do not touch the files in
the working tree.</p></div>
</div>
<div class="sect2">
<h3 id="_synching_repositories">Synching repositories</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
<a href="git-daemon.html">git-daemon(1)</a>
</dt>
<dd>
<p>
        A really simple server for Git repositories.
</p>
</dd>
<dt class="hdlist1">
<a href="git-fetch-pack.html">git-fetch-pack(1)</a>
</dt>
<dd>
<p>
        Receive missing objects from another repository.
</p>
</dd>
<dt class="hdlist1">
<a href="git-http-backend.html">git-http-backend(1)</a>
</dt>
<dd>
<p>
        Server side implementation of Git over HTTP.
</p>
</dd>
<dt class="hdlist1">
<a href="git-send-pack.html">git-send-pack(1)</a>
</dt>
<dd>
<p>
        Push objects over Git protocol to another repository.
</p>
</dd>
<dt class="hdlist1">
<a href="git-update-server-info.html">git-update-server-info(1)</a>
</dt>
<dd>
<p>
        Update auxiliary info file to help dumb servers.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>The following are helper commands used by the above; end users
typically do not use them directly.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<a href="git-http-fetch.html">git-http-fetch(1)</a>
</dt>
<dd>
<p>
        Download from a remote Git repository via HTTP.
</p>
</dd>
<dt class="hdlist1">
<a href="git-http-push.html">git-http-push(1)</a>
</dt>
<dd>
<p>
        Push objects over HTTP/DAV to another repository.
</p>
</dd>
<dt class="hdlist1">
<a href="git-parse-remote.html">git-parse-remote(1)</a>
</dt>
<dd>
<p>
        Routines to help parsing remote repository access parameters.
</p>
</dd>
<dt class="hdlist1">
<a href="git-receive-pack.html">git-receive-pack(1)</a>
</dt>
<dd>
<p>
        Receive what is pushed into the repository.
</p>
</dd>
<dt class="hdlist1">
<a href="git-shell.html">git-shell(1)</a>
</dt>
<dd>
<p>
        Restricted login shell for Git-only SSH access.
</p>
</dd>
<dt class="hdlist1">
<a href="git-upload-archive.html">git-upload-archive(1)</a>
</dt>
<dd>
<p>
        Send archive back to git-archive.
</p>
</dd>
<dt class="hdlist1">
<a href="git-upload-pack.html">git-upload-pack(1)</a>
</dt>
<dd>
<p>
        Send objects packed back to git-fetch-pack.
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_internal_helper_commands">Internal helper commands</h3>
<div class="paragraph"><p>These are internal helper commands used by other commands; end
users typically do not use them directly.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<a href="git-check-attr.html">git-check-attr(1)</a>
</dt>
<dd>
<p>
        Display gitattributes information.
</p>
</dd>
<dt class="hdlist1">
<a href="git-check-ignore.html">git-check-ignore(1)</a>
</dt>
<dd>
<p>
        Debug gitignore / exclude files.
</p>
</dd>
<dt class="hdlist1">
<a href="git-check-mailmap.html">git-check-mailmap(1)</a>
</dt>
<dd>
<p>
        Show canonical names and email addresses of contacts.
</p>
</dd>
<dt class="hdlist1">
<a href="git-check-ref-format.html">git-check-ref-format(1)</a>
</dt>
<dd>
<p>
        Ensures that a reference name is well formed.
</p>
</dd>
<dt class="hdlist1">
<a href="git-column.html">git-column(1)</a>
</dt>
<dd>
<p>
        Display data in columns.
</p>
</dd>
<dt class="hdlist1">
<a href="git-credential.html">git-credential(1)</a>
</dt>
<dd>
<p>
        Retrieve and store user credentials.
</p>
</dd>
<dt class="hdlist1">
<a href="git-credential-cache.html">git-credential-cache(1)</a>
</dt>
<dd>
<p>
        Helper to temporarily store passwords in memory.
</p>
</dd>
<dt class="hdlist1">
<a href="git-credential-store.html">git-credential-store(1)</a>
</dt>
<dd>
<p>
        Helper to store credentials on disk.
</p>
</dd>
<dt class="hdlist1">
<a href="git-fmt-merge-msg.html">git-fmt-merge-msg(1)</a>
</dt>
<dd>
<p>
        Produce a merge commit message.
</p>
</dd>
<dt class="hdlist1">
<a href="git-mailinfo.html">git-mailinfo(1)</a>
</dt>
<dd>
<p>
        Extracts patch and authorship from a single e-mail message.
</p>
</dd>
<dt class="hdlist1">
<a href="git-mailsplit.html">git-mailsplit(1)</a>
</dt>
<dd>
<p>
        Simple UNIX mbox splitter program.
</p>
</dd>
<dt class="hdlist1">
<a href="git-merge-one-file.html">git-merge-one-file(1)</a>
</dt>
<dd>
<p>
        The standard helper program to use with git-merge-index.
</p>
</dd>
<dt class="hdlist1">
<a href="git-patch-id.html">git-patch-id(1)</a>
</dt>
<dd>
<p>
        Compute unique ID for a patch.
</p>
</dd>
<dt class="hdlist1">
<a href="git-sh-i18n.html">git-sh-i18n(1)</a>
</dt>
<dd>
<p>
        Git&#8217;s i18n setup code for shell scripts.
</p>
</dd>
<dt class="hdlist1">
<a href="git-sh-setup.html">git-sh-setup(1)</a>
</dt>
<dd>
<p>
        Common Git shell script setup code.
</p>
</dd>
<dt class="hdlist1">
<a href="git-stripspace.html">git-stripspace(1)</a>
</dt>
<dd>
<p>
        Remove unnecessary whitespace.
</p>
</dd>
</dl></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_configuration_mechanism">Configuration Mechanism</h2>
<div class="sectionbody">
<div class="paragraph"><p>Git uses a simple text format to store customizations that are per
repository and are per user.  Such a configuration file may look
like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>#
# A '#' or ';' character indicates a comment.
#

; core variables
[core]
        ; Don't trust file modes
        filemode = false

; user identity
[user]
        name = "Junio C Hamano"
        email = "gitster@pobox.com"</tt></pre>
</div></div>
<div class="paragraph"><p>Various commands read from the configuration file and adjust
their operation accordingly.  See <a href="git-config.html">git-config(1)</a> for a
list and more details about the configuration mechanism.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_identifier_terminology">Identifier Terminology</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
&lt;object&gt;
</dt>
<dd>
<p>
        Indicates the object name for any type of object.
</p>
</dd>
<dt class="hdlist1">
&lt;blob&gt;
</dt>
<dd>
<p>
        Indicates a blob object name.
</p>
</dd>
<dt class="hdlist1">
&lt;tree&gt;
</dt>
<dd>
<p>
        Indicates a tree object name.
</p>
</dd>
<dt class="hdlist1">
&lt;commit&gt;
</dt>
<dd>
<p>
        Indicates a commit object name.
</p>
</dd>
<dt class="hdlist1">
&lt;tree-ish&gt;
</dt>
<dd>
<p>
        Indicates a tree, commit or tag object name.  A
        command that takes a &lt;tree-ish&gt; argument ultimately wants to
        operate on a &lt;tree&gt; object but automatically dereferences
        &lt;commit&gt; and &lt;tag&gt; objects that point at a &lt;tree&gt;.
</p>
</dd>
<dt class="hdlist1">
&lt;commit-ish&gt;
</dt>
<dd>
<p>
        Indicates a commit or tag object name.  A
        command that takes a &lt;commit-ish&gt; argument ultimately wants to
        operate on a &lt;commit&gt; object but automatically dereferences
        &lt;tag&gt; objects that point at a &lt;commit&gt;.
</p>
</dd>
<dt class="hdlist1">
&lt;type&gt;
</dt>
<dd>
<p>
        Indicates that an object type is required.
        Currently one of: <tt>blob</tt>, <tt>tree</tt>, <tt>commit</tt>, or <tt>tag</tt>.
</p>
</dd>
<dt class="hdlist1">
&lt;file&gt;
</dt>
<dd>
<p>
        Indicates a filename - almost always relative to the
        root of the tree structure <tt>GIT_INDEX_FILE</tt> describes.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_symbolic_identifiers">Symbolic Identifiers</h2>
<div class="sectionbody">
<div class="paragraph"><p>Any Git command accepting any &lt;object&gt; can also use the following
symbolic notation:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
HEAD
</dt>
<dd>
<p>
        indicates the head of the current branch.
</p>
</dd>
<dt class="hdlist1">
&lt;tag&gt;
</dt>
<dd>
<p>
        a valid tag <em>name</em>
        (i.e. a <tt>refs/tags/&lt;tag&gt;</tt> reference).
</p>
</dd>
<dt class="hdlist1">
&lt;head&gt;
</dt>
<dd>
<p>
        a valid head <em>name</em>
        (i.e. a <tt>refs/heads/&lt;head&gt;</tt> reference).
</p>
</dd>
</dl></div>
<div class="paragraph"><p>For a more complete list of ways to spell object names, see
"SPECIFYING REVISIONS" section in <a href="gitrevisions.html">gitrevisions(7)</a>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_file_directory_structure">File/Directory Structure</h2>
<div class="sectionbody">
<div class="paragraph"><p>Please see the <a href="gitrepository-layout.html">gitrepository-layout(5)</a> document.</p></div>
<div class="paragraph"><p>Read <a href="githooks.html">githooks(5)</a> for more details about each hook.</p></div>
<div class="paragraph"><p>Higher level SCMs may provide and manage additional information in the
<tt>$GIT_DIR</tt>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_terminology">Terminology</h2>
<div class="sectionbody">
<div class="paragraph"><p>Please see <a href="gitglossary.html">gitglossary(7)</a>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_environment_variables">Environment Variables</h2>
<div class="sectionbody">
<div class="paragraph"><p>Various Git commands use the following environment variables:</p></div>
<div class="sect2">
<h3 id="_the_git_repository">The Git Repository</h3>
<div class="paragraph"><p>These environment variables apply to <em>all</em> core Git commands. Nb: it
is worth noting that they may be used/overridden by SCMS sitting above
Git so take care if using Cogito etc.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<em>GIT_INDEX_FILE</em>
</dt>
<dd>
<p>
        This environment allows the specification of an alternate
        index file. If not specified, the default of <tt>$GIT_DIR/index</tt>
        is used.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_INDEX_VERSION</em>
</dt>
<dd>
<p>
        This environment variable allows the specification of an index
        version for new repositories.  It won&#8217;t affect existing index
        files.  By default index file version [23] is used.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_OBJECT_DIRECTORY</em>
</dt>
<dd>
<p>
        If the object storage directory is specified via this
        environment variable then the sha1 directories are created
        underneath - otherwise the default <tt>$GIT_DIR/objects</tt>
        directory is used.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_ALTERNATE_OBJECT_DIRECTORIES</em>
</dt>
<dd>
<p>
        Due to the immutable nature of Git objects, old objects can be
        archived into shared, read-only directories. This variable
        specifies a ":" separated (on Windows ";" separated) list
        of Git object directories which can be used to search for Git
        objects. New objects will not be written to these directories.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_DIR</em>
</dt>
<dd>
<p>
        If the <em>GIT_DIR</em> environment variable is set then it
        specifies a path to use instead of the default <tt>.git</tt>
        for the base of the repository.
        The <em>--git-dir</em> command-line option also sets this value.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_WORK_TREE</em>
</dt>
<dd>
<p>
        Set the path to the root of the working tree.
        This can also be controlled by the <em>--work-tree</em> command line
        option and the core.worktree configuration variable.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_NAMESPACE</em>
</dt>
<dd>
<p>
        Set the Git namespace; see <a href="gitnamespaces.html">gitnamespaces(7)</a> for details.
        The <em>--namespace</em> command-line option also sets this value.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_CEILING_DIRECTORIES</em>
</dt>
<dd>
<p>
        This should be a colon-separated list of absolute paths.  If
        set, it is a list of directories that Git should not chdir up
        into while looking for a repository directory (useful for
        excluding slow-loading network directories).  It will not
        exclude the current working directory or a GIT_DIR set on the
        command line or in the environment.  Normally, Git has to read
        the entries in this list and resolve any symlink that
        might be present in order to compare them with the current
        directory.  However, if even this access is slow, you
        can add an empty entry to the list to tell Git that the
        subsequent entries are not symlinks and needn&#8217;t be resolved;
        e.g.,
        <em>GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink</em>.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_DISCOVERY_ACROSS_FILESYSTEM</em>
</dt>
<dd>
<p>
        When run in a directory that does not have ".git" repository
        directory, Git tries to find such a directory in the parent
        directories to find the top of the working tree, but by default it
        does not cross filesystem boundaries.  This environment variable
        can be set to true to tell Git not to stop at filesystem
        boundaries.  Like <em>GIT_CEILING_DIRECTORIES</em>, this will not affect
        an explicit repository directory set via <em>GIT_DIR</em> or on the
        command line.
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_git_commits">Git Commits</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
<em>GIT_AUTHOR_NAME</em>
</dt>
<dt class="hdlist1">
<em>GIT_AUTHOR_EMAIL</em>
</dt>
<dt class="hdlist1">
<em>GIT_AUTHOR_DATE</em>
</dt>
<dt class="hdlist1">
<em>GIT_COMMITTER_NAME</em>
</dt>
<dt class="hdlist1">
<em>GIT_COMMITTER_EMAIL</em>
</dt>
<dt class="hdlist1">
<em>GIT_COMMITTER_DATE</em>
</dt>
<dt class="hdlist1">
<em>EMAIL</em>
</dt>
<dd>
<p>
        see <a href="git-commit-tree.html">git-commit-tree(1)</a>
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_git_diffs">Git Diffs</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
<em>GIT_DIFF_OPTS</em>
</dt>
<dd>
<p>
        Only valid setting is "--unified=??" or "-u??" to set the
        number of context lines shown when a unified diff is created.
        This takes precedence over any "-U" or "--unified" option
        value passed on the Git diff command line.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_EXTERNAL_DIFF</em>
</dt>
<dd>
<p>
        When the environment variable <em>GIT_EXTERNAL_DIFF</em> is set, the
        program named by it is called, instead of the diff invocation
        described above.  For a path that is added, removed, or modified,
        <em>GIT_EXTERNAL_DIFF</em> is called with 7 parameters:
</p>
<div class="literalblock">
<div class="content">
<pre><tt>path old-file old-hex old-mode new-file new-hex new-mode</tt></pre>
</div></div>
<div class="paragraph"><p>where:</p></div>
</dd>
<dt class="hdlist1">
&lt;old|new&gt;-file
</dt>
<dd>
<p>
are files GIT_EXTERNAL_DIFF can use to read the
                         contents of &lt;old|new&gt;,
</p>
</dd>
<dt class="hdlist1">
&lt;old|new&gt;-hex
</dt>
<dd>
<p>
are the 40-hexdigit SHA-1 hashes,
</p>
</dd>
<dt class="hdlist1">
&lt;old|new&gt;-mode
</dt>
<dd>
<p>
are the octal representation of the file modes.
</p>
<div class="paragraph"><p>The file parameters can point at the user&#8217;s working file
(e.g. <tt>new-file</tt> in "git-diff-files"), <tt>/dev/null</tt> (e.g. <tt>old-file</tt>
when a new file is added), or a temporary file (e.g. <tt>old-file</tt> in the
index).  <em>GIT_EXTERNAL_DIFF</em> should not worry about unlinking the
temporary file --- it is removed when <em>GIT_EXTERNAL_DIFF</em> exits.</p></div>
<div class="paragraph"><p>For a path that is unmerged, <em>GIT_EXTERNAL_DIFF</em> is called with 1
parameter, &lt;path&gt;.</p></div>
<div class="paragraph"><p>For each path <em>GIT_EXTERNAL_DIFF</em> is called, two environment variables,
<em>GIT_DIFF_PATH_COUNTER</em> and <em>GIT_DIFF_PATH_TOTAL</em> are set.</p></div>
</dd>
<dt class="hdlist1">
<em>GIT_DIFF_PATH_COUNTER</em>
</dt>
<dd>
<p>
        A 1-based counter incremented by one for every path.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_DIFF_PATH_TOTAL</em>
</dt>
<dd>
<p>
        The total number of paths.
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_other">other</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
<em>GIT_MERGE_VERBOSITY</em>
</dt>
<dd>
<p>
        A number controlling the amount of output shown by
        the recursive merge strategy.  Overrides merge.verbosity.
        See <a href="git-merge.html">git-merge(1)</a>
</p>
</dd>
<dt class="hdlist1">
<em>GIT_PAGER</em>
</dt>
<dd>
<p>
        This environment variable overrides <tt>$PAGER</tt>. If it is set
        to an empty string or to the value "cat", Git will not launch
        a pager.  See also the <tt>core.pager</tt> option in
        <a href="git-config.html">git-config(1)</a>.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_EDITOR</em>
</dt>
<dd>
<p>
        This environment variable overrides <tt>$EDITOR</tt> and <tt>$VISUAL</tt>.
        It is used by several Git commands when, on interactive mode,
        an editor is to be launched. See also <a href="git-var.html">git-var(1)</a>
        and the <tt>core.editor</tt> option in <a href="git-config.html">git-config(1)</a>.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_SSH</em>
</dt>
<dd>
<p>
        If this environment variable is set then <em>git fetch</em>
        and <em>git push</em> will use this command instead
        of <em>ssh</em> when they need to connect to a remote system.
        The <em>$GIT_SSH</em> command will be given exactly two or
        four arguments: the <em>username@host</em> (or just <em>host</em>)
        from the URL and the shell command to execute on that
        remote system, optionally preceded by <em>-p</em> (literally) and
        the <em>port</em> from the URL when it specifies something other
        than the default SSH port.
</p>
<div class="paragraph"><p>To pass options to the program that you want to list in GIT_SSH
you will need to wrap the program and options into a shell script,
then set GIT_SSH to refer to the shell script.</p></div>
<div class="paragraph"><p>Usually it is easier to configure any desired options through your
personal <tt>.ssh/config</tt> file.  Please consult your ssh documentation
for further details.</p></div>
</dd>
<dt class="hdlist1">
<em>GIT_ASKPASS</em>
</dt>
<dd>
<p>
        If this environment variable is set, then Git commands which need to
        acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
        will call this program with a suitable prompt as command line argument
        and read the password from its STDOUT. See also the <em>core.askpass</em>
        option in <a href="git-config.html">git-config(1)</a>.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_CONFIG_NOSYSTEM</em>
</dt>
<dd>
<p>
        Whether to skip reading settings from the system-wide
        <tt>$(prefix)/etc/gitconfig</tt> file.  This environment variable can
        be used along with <tt>$HOME</tt> and <tt>$XDG_CONFIG_HOME</tt> to create a
        predictable environment for a picky script, or you can set it
        temporarily to avoid using a buggy <tt>/etc/gitconfig</tt> file while
        waiting for someone with sufficient permissions to fix it.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_FLUSH</em>
</dt>
<dd>
<p>
        If this environment variable is set to "1", then commands such
        as <em>git blame</em> (in incremental mode), <em>git rev-list</em>, <em>git log</em>,
        <em>git check-attr</em> and <em>git check-ignore</em> will
        force a flush of the output stream after each record have been
        flushed. If this
        variable is set to "0", the output of these commands will be done
        using completely buffered I/O.   If this environment variable is
        not set, Git will choose buffered or record-oriented flushing
        based on whether stdout appears to be redirected to a file or not.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_TRACE</em>
</dt>
<dd>
<p>
        If this variable is set to "1", "2" or "true" (comparison
        is case insensitive), Git will print <tt>trace:</tt> messages on
        stderr telling about alias expansion, built-in command
        execution and external command execution.
        If this variable is set to an integer value greater than 1
        and lower than 10 (strictly) then Git will interpret this
        value as an open file descriptor and will try to write the
        trace messages into this file descriptor.
        Alternatively, if this variable is set to an absolute path
        (starting with a <em>/</em> character), Git will interpret this
        as a file path and will try to write the trace messages
        into it.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_TRACE_PACK_ACCESS</em>
</dt>
<dd>
<p>
        If this variable is set to a path, a file will be created at
        the given path logging all accesses to any packs. For each
        access, the pack file name and an offset in the pack is
        recorded. This may be helpful for troubleshooting some
        pack-related performance problems.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_TRACE_PACKET</em>
</dt>
<dd>
<p>
        If this variable is set, it shows a trace of all packets
        coming in or out of a given program. This can help with
        debugging object negotiation or other protocol issues. Tracing
        is turned off at a packet starting with "PACK".
</p>
</dd>
<dt class="hdlist1">
GIT_LITERAL_PATHSPECS
</dt>
<dd>
<p>
        Setting this variable to <tt>1</tt> will cause Git to treat all
        pathspecs literally, rather than as glob patterns. For example,
        running <tt>GIT_LITERAL_PATHSPECS=1 git log -- '*.c'</tt> will search
        for commits that touch the path <tt>*.c</tt>, not any paths that the
        glob <tt>*.c</tt> matches. You might want this if you are feeding
        literal paths to Git (e.g., paths previously given to you by
        <tt>git ls-tree</tt>, <tt>--raw</tt> diff output, etc).
</p>
</dd>
<dt class="hdlist1">
GIT_GLOB_PATHSPECS
</dt>
<dd>
<p>
        Setting this variable to <tt>1</tt> will cause Git to treat all
        pathspecs as glob patterns (aka "glob" magic).
</p>
</dd>
<dt class="hdlist1">
GIT_NOGLOB_PATHSPECS
</dt>
<dd>
<p>
        Setting this variable to <tt>1</tt> will cause Git to treat all
        pathspecs as literal (aka "literal" magic).
</p>
</dd>
<dt class="hdlist1">
GIT_ICASE_PATHSPECS
</dt>
<dd>
<p>
        Setting this variable to <tt>1</tt> will cause Git to treat all
        pathspecs as case-insensitive.
</p>
</dd>
<dt class="hdlist1">
<em>GIT_REFLOG_ACTION</em>
</dt>
<dd>
<p>
        When a ref is updated, reflog entries are created to keep
        track of the reason why the ref was updated (which is
        typically the name of the high-level command that updated
        the ref), in addition to the old and new values of the ref.
        A scripted Porcelain command can use set_reflog_action
        helper function in <tt>git-sh-setup</tt> to set its name to this
        variable when it is invoked as the top level command by the
        end user, to be recorded in the body of the reflog.
</p>
</dd>
</dl></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_discussion_a_id_discussion_a">Discussion<a id="Discussion"></a></h2>
<div class="sectionbody">
<div class="paragraph"><p>More detail on the following is available from the
<a href="user-manual.html#git-concepts">Git concepts chapter of the
user-manual</a> and <a href="gitcore-tutorial.html">gitcore-tutorial(7)</a>.</p></div>
<div class="paragraph"><p>A Git project normally consists of a working directory with a ".git"
subdirectory at the top level.  The .git directory contains, among other
things, a compressed object database representing the complete history
of the project, an "index" file which links that history to the current
contents of the working tree, and named pointers into that history such
as tags and branch heads.</p></div>
<div class="paragraph"><p>The object database contains objects of three main types: blobs, which
hold file data; trees, which point to blobs and other trees to build up
directory hierarchies; and commits, which each reference a single tree
and some number of parent commits.</p></div>
<div class="paragraph"><p>The commit, equivalent to what other systems call a "changeset" or
"version", represents a step in the project&#8217;s history, and each parent
represents an immediately preceding step.  Commits with more than one
parent represent merges of independent lines of development.</p></div>
<div class="paragraph"><p>All objects are named by the SHA-1 hash of their contents, normally
written as a string of 40 hex digits.  Such names are globally unique.
The entire history leading up to a commit can be vouched for by signing
just that commit.  A fourth object type, the tag, is provided for this
purpose.</p></div>
<div class="paragraph"><p>When first created, objects are stored in individual files, but for
efficiency may later be compressed together into "pack files".</p></div>
<div class="paragraph"><p>Named pointers called refs mark interesting points in history.  A ref
may contain the SHA-1 name of an object or the name of another ref.  Refs
with names beginning <tt>ref/head/</tt> contain the SHA-1 name of the most
recent commit (or "head") of a branch under development.  SHA-1 names of
tags of interest are stored under <tt>ref/tags/</tt>.  A special ref named
<tt>HEAD</tt> contains the name of the currently checked-out branch.</p></div>
<div class="paragraph"><p>The index file is initialized with a list of all paths and, for each
path, a blob object and a set of attributes.  The blob object represents
the contents of the file as of the head of the current branch.  The
attributes (last modified time, size, etc.) are taken from the
corresponding file in the working tree.  Subsequent changes to the
working tree can be found by comparing these attributes.  The index may
be updated with new content, and new commits may be created from the
content stored in the index.</p></div>
<div class="paragraph"><p>The index is also capable of storing multiple entries (called "stages")
for a given pathname.  These stages are used to hold the various
unmerged version of a file when a merge is in progress.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_further_documentation">FURTHER DOCUMENTATION</h2>
<div class="sectionbody">
<div class="paragraph"><p>See the references in the "description" section to get started
using Git.  The following is probably more detail than necessary
for a first-time user.</p></div>
<div class="paragraph"><p>The <a href="user-manual.html#git-concepts">Git concepts chapter of the
user-manual</a> and <a href="gitcore-tutorial.html">gitcore-tutorial(7)</a> both provide
introductions to the underlying Git architecture.</p></div>
<div class="paragraph"><p>See <a href="gitworkflows.html">gitworkflows(7)</a> for an overview of recommended workflows.</p></div>
<div class="paragraph"><p>See also the <a href="howto-index.html">howto</a> documents for some useful
examples.</p></div>
<div class="paragraph"><p>The internals are documented in the
<a href="technical/api-index.html">Git API documentation</a>.</p></div>
<div class="paragraph"><p>Users migrating from CVS may also want to
read <a href="gitcvs-migration.html">gitcvs-migration(7)</a>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_authors">Authors</h2>
<div class="sectionbody">
<div class="paragraph"><p>Git was started by Linus Torvalds, and is currently maintained by Junio
C Hamano. Numerous contributions have come from the Git mailing list
&lt;<a href="mailto:git@vger.kernel.org">git@vger.kernel.org</a>&gt;.  <a href="http://www.ohloh.net/p/git/contributors/summary">http://www.ohloh.net/p/git/contributors/summary</a>
gives you a more complete list of contributors.</p></div>
<div class="paragraph"><p>If you have a clone of git.git itself, the
output of <a href="git-shortlog.html">git-shortlog(1)</a> and <a href="git-blame.html">git-blame(1)</a> can show you
the authors for specific parts of the project.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_reporting_bugs">Reporting Bugs</h2>
<div class="sectionbody">
<div class="paragraph"><p>Report bugs to the Git mailing list &lt;<a href="mailto:git@vger.kernel.org">git@vger.kernel.org</a>&gt; where the
development and maintenance is primarily done.  You do not have to be
subscribed to the list to send a message there.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p><a href="gittutorial.html">gittutorial(7)</a>, <a href="gittutorial-2.html">gittutorial-2(7)</a>,
<a href="everyday.html">Everyday Git</a>, <a href="gitcvs-migration.html">gitcvs-migration(7)</a>,
<a href="gitglossary.html">gitglossary(7)</a>, <a href="gitcore-tutorial.html">gitcore-tutorial(7)</a>,
<a href="gitcli.html">gitcli(7)</a>, <a href="user-manual.html">The Git User&#8217;s Manual</a>,
<a href="gitworkflows.html">gitworkflows(7)</a></p></div>
</div>
</div>
<div class="sect1">
<h2 id="_git">GIT</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated 2014-03-14 14:59:49 PDT
</div>
</div>
</body>
</html>
