<!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.9" />
<title>giteveryday(7)</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; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#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; vertical-align: text-bottom; }
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.toclevel0, 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; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

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
 *
 * */

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]([1-'+(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.toLowerCase() == '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.toLowerCase() == '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>
giteveryday(7) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>giteveryday -
   A useful minimum set of commands for Everyday Git
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="paragraph"><p>Everyday Git With 20 Commands Or So</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Git users can broadly be grouped into four categories for the purposes of
describing here a small set of useful command for everyday Git.</p></div>
<div class="ulist"><ul>
<li>
<p>
<a href="#STANDALONE">Individual Developer (Standalone)</a> commands are essential
        for anybody who makes a commit, even for somebody who works alone.
</p>
</li>
<li>
<p>
If you work with other people, you will need commands listed in
        the <a href="#PARTICIPANT">Individual Developer (Participant)</a> section as well.
</p>
</li>
<li>
<p>
People who play the <a href="#INTEGRATOR">Integrator</a> role need to learn some
        more commands in addition to the above.
</p>
</li>
<li>
<p>
<a href="#ADMINISTRATION">Repository Administration</a> commands are for system
        administrators who are responsible for the care and feeding
        of Git repositories.
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_individual_developer_standalone_a_id_standalone_a">Individual Developer (Standalone)<a id="STANDALONE"></a></h2>
<div class="sectionbody">
<div class="paragraph"><p>A standalone individual developer does not exchange patches with
other people, and works alone in a single repository, using the
following commands.</p></div>
<div class="ulist"><ul>
<li>
<p>
<a href="git-init.html">git-init(1)</a> to create a new repository.
</p>
</li>
<li>
<p>
<a href="git-log.html">git-log(1)</a> to see what happened.
</p>
</li>
<li>
<p>
<a href="git-checkout.html">git-checkout(1)</a> and <a href="git-branch.html">git-branch(1)</a> to switch
    branches.
</p>
</li>
<li>
<p>
<a href="git-add.html">git-add(1)</a> to manage the index file.
</p>
</li>
<li>
<p>
<a href="git-diff.html">git-diff(1)</a> and <a href="git-status.html">git-status(1)</a> to see what
    you are in the middle of doing.
</p>
</li>
<li>
<p>
<a href="git-commit.html">git-commit(1)</a> to advance the current branch.
</p>
</li>
<li>
<p>
<a href="git-reset.html">git-reset(1)</a> and <a href="git-checkout.html">git-checkout(1)</a> (with
    pathname parameters) to undo changes.
</p>
</li>
<li>
<p>
<a href="git-merge.html">git-merge(1)</a> to merge between local branches.
</p>
</li>
<li>
<p>
<a href="git-rebase.html">git-rebase(1)</a> to maintain topic branches.
</p>
</li>
<li>
<p>
<a href="git-tag.html">git-tag(1)</a> to mark a known point.
</p>
</li>
</ul></div>
<div class="sect2">
<h3 id="_examples">Examples</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
Use a tarball as a starting point for a new repository.
</dt>
<dd>
<div class="listingblock">
<div class="content">
<pre><code>$ tar zxf frotz.tar.gz
$ cd frotz
$ git init
$ git add . <b>&lt;1&gt;</b>
$ git commit -m "import of frotz source tree."
$ git tag v2.43 <b>&lt;2&gt;</b></code></pre>
</div></div>
<div class="colist arabic"><ol>
<li>
<p>
add everything under the current directory.
</p>
</li>
<li>
<p>
make a lightweight, unannotated tag.
</p>
</li>
</ol></div>
</dd>
<dt class="hdlist1">
Create a topic branch and develop.
</dt>
<dd>
<div class="listingblock">
<div class="content">
<pre><code>$ git checkout -b alsa-audio <b>&lt;1&gt;</b>
$ edit/compile/test
$ git checkout -- curses/ux_audio_oss.c <b>&lt;2&gt;</b>
$ git add curses/ux_audio_alsa.c <b>&lt;3&gt;</b>
$ edit/compile/test
$ git diff HEAD <b>&lt;4&gt;</b>
$ git commit -a -s <b>&lt;5&gt;</b>
$ edit/compile/test
$ git diff HEAD^ <b>&lt;6&gt;</b>
$ git commit -a --amend <b>&lt;7&gt;</b>
$ git checkout master <b>&lt;8&gt;</b>
$ git merge alsa-audio <b>&lt;9&gt;</b>
$ git log --since='3 days ago' <b>&lt;10&gt;</b>
$ git log v2.43.. curses/ <b>&lt;11&gt;</b></code></pre>
</div></div>
<div class="colist arabic"><ol>
<li>
<p>
create a new topic branch.
</p>
</li>
<li>
<p>
revert your botched changes in <code>curses/ux_audio_oss.c</code>.
</p>
</li>
<li>
<p>
you need to tell Git if you added a new file; removal and
modification will be caught if you do <code>git commit -a</code> later.
</p>
</li>
<li>
<p>
to see what changes you are committing.
</p>
</li>
<li>
<p>
commit everything, as you have tested, with your sign-off.
</p>
</li>
<li>
<p>
look at all your changes including the previous commit.
</p>
</li>
<li>
<p>
amend the previous commit, adding all your new changes,
using your original message.
</p>
</li>
<li>
<p>
switch to the master branch.
</p>
</li>
<li>
<p>
merge a topic branch into your master branch.
</p>
</li>
<li>
<p>
review commit logs; other forms to limit output can be
combined and include <code>-10</code> (to show up to 10 commits),
<code>--until=2005-12-10</code>, etc.
</p>
</li>
<li>
<p>
view only the changes that touch what&#8217;s in <code>curses/</code>
directory, since <code>v2.43</code> tag.
</p>
</li>
</ol></div>
</dd>
</dl></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_individual_developer_participant_a_id_participant_a">Individual Developer (Participant)<a id="PARTICIPANT"></a></h2>
<div class="sectionbody">
<div class="paragraph"><p>A developer working as a participant in a group project needs to
learn how to communicate with others, and uses these commands in
addition to the ones needed by a standalone developer.</p></div>
<div class="ulist"><ul>
<li>
<p>
<a href="git-clone.html">git-clone(1)</a> from the upstream to prime your local
    repository.
</p>
</li>
<li>
<p>
<a href="git-pull.html">git-pull(1)</a> and <a href="git-fetch.html">git-fetch(1)</a> from "origin"
    to keep up-to-date with the upstream.
</p>
</li>
<li>
<p>
<a href="git-push.html">git-push(1)</a> to shared repository, if you adopt CVS
    style shared repository workflow.
</p>
</li>
<li>
<p>
<a href="git-format-patch.html">git-format-patch(1)</a> to prepare e-mail submission, if
    you adopt Linux kernel-style public forum workflow.
</p>
</li>
<li>
<p>
<a href="git-send-email.html">git-send-email(1)</a> to send your e-mail submission without
    corruption by your MUA.
</p>
</li>
<li>
<p>
<a href="git-request-pull.html">git-request-pull(1)</a> to create a summary of changes
    for your upstream to pull.
</p>
</li>
</ul></div>
<div class="sect2">
<h3 id="_examples_2">Examples</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
Clone the upstream and work on it.  Feed changes to upstream.
</dt>
<dd>
<div class="listingblock">
<div class="content">
<pre><code>$ git clone git://git.kernel.org/pub/scm/.../torvalds/linux-2.6 my2.6
$ cd my2.6
$ git checkout -b mine master <b>&lt;1&gt;</b>
$ edit/compile/test; git commit -a -s <b>&lt;2&gt;</b>
$ git format-patch master <b>&lt;3&gt;</b>
$ git send-email --to="person &lt;email@example.com&gt;" 00*.patch <b>&lt;4&gt;</b>
$ git checkout master <b>&lt;5&gt;</b>
$ git pull <b>&lt;6&gt;</b>
$ git log -p ORIG_HEAD.. arch/i386 include/asm-i386 <b>&lt;7&gt;</b>
$ git ls-remote --heads http://git.kernel.org/.../jgarzik/libata-dev.git <b>&lt;8&gt;</b>
$ git pull git://git.kernel.org/pub/.../jgarzik/libata-dev.git ALL <b>&lt;9&gt;</b>
$ git reset --hard ORIG_HEAD <b>&lt;10&gt;</b>
$ git gc <b>&lt;11&gt;</b></code></pre>
</div></div>
<div class="colist arabic"><ol>
<li>
<p>
checkout a new branch <code>mine</code> from master.
</p>
</li>
<li>
<p>
repeat as needed.
</p>
</li>
<li>
<p>
extract patches from your branch, relative to master,
</p>
</li>
<li>
<p>
and email them.
</p>
</li>
<li>
<p>
return to <code>master</code>, ready to see what&#8217;s new
</p>
</li>
<li>
<p>
<code>git pull</code> fetches from <code>origin</code> by default and merges into the
current branch.
</p>
</li>
<li>
<p>
immediately after pulling, look at the changes done upstream
since last time we checked, only in the
area we are interested in.
</p>
</li>
<li>
<p>
check the branch names in an external repository (if not known).
</p>
</li>
<li>
<p>
fetch from a specific branch <code>ALL</code> from a specific repository
and merge it.
</p>
</li>
<li>
<p>
revert the pull.
</p>
</li>
<li>
<p>
garbage collect leftover objects from reverted pull.
</p>
</li>
</ol></div>
</dd>
<dt class="hdlist1">
Push into another repository.
</dt>
<dd>
<div class="listingblock">
<div class="content">
<pre><code>satellite$ git clone mothership:frotz frotz <b>&lt;1&gt;</b>
satellite$ cd frotz
satellite$ git config --get-regexp '^(remote|branch)\.' <b>&lt;2&gt;</b>
remote.origin.url mothership:frotz
remote.origin.fetch refs/heads/*:refs/remotes/origin/*
branch.master.remote origin
branch.master.merge refs/heads/master
satellite$ git config remote.origin.push \
           +refs/heads/*:refs/remotes/satellite/* <b>&lt;3&gt;</b>
satellite$ edit/compile/test/commit
satellite$ git push origin <b>&lt;4&gt;</b>

mothership$ cd frotz
mothership$ git checkout master
mothership$ git merge satellite/master <b>&lt;5&gt;</b></code></pre>
</div></div>
<div class="colist arabic"><ol>
<li>
<p>
mothership machine has a frotz repository under your home
directory; clone from it to start a repository on the satellite
machine.
</p>
</li>
<li>
<p>
clone sets these configuration variables by default.
It arranges <code>git pull</code> to fetch and store the branches of mothership
machine to local <code>remotes/origin/*</code> remote-tracking branches.
</p>
</li>
<li>
<p>
arrange <code>git push</code> to push all local branches to
their corresponding branch of the mothership machine.
</p>
</li>
<li>
<p>
push will stash all our work away on <code>remotes/satellite/*</code>
remote-tracking branches on the mothership machine.  You could use this
as a back-up method. Likewise, you can pretend that mothership
"fetched" from you (useful when access is one sided).
</p>
</li>
<li>
<p>
on mothership machine, merge the work done on the satellite
machine into the master branch.
</p>
</li>
</ol></div>
</dd>
<dt class="hdlist1">
Branch off of a specific tag.
</dt>
<dd>
<div class="listingblock">
<div class="content">
<pre><code>$ git checkout -b private2.6.14 v2.6.14 <b>&lt;1&gt;</b>
$ edit/compile/test; git commit -a
$ git checkout master
$ git cherry-pick v2.6.14..private2.6.14 <b>&lt;2&gt;</b></code></pre>
</div></div>
<div class="colist arabic"><ol>
<li>
<p>
create a private branch based on a well known (but somewhat behind)
tag.
</p>
</li>
<li>
<p>
forward port all changes in <code>private2.6.14</code> branch to <code>master</code> branch
without a formal "merging". Or longhand<br />
<code>git format-patch -k -m --stdout v2.6.14..private2.6.14 |
  git am -3 -k</code>
</p>
</li>
</ol></div>
</dd>
</dl></div>
<div class="paragraph"><p>An alternate participant submission mechanism is using the
<code>git request-pull</code> or pull-request mechanisms (e.g as used on
GitHub (www.github.com) to notify your upstream of your
contribution.</p></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_integrator_a_id_integrator_a">Integrator<a id="INTEGRATOR"></a></h2>
<div class="sectionbody">
<div class="paragraph"><p>A fairly central person acting as the integrator in a group
project receives changes made by others, reviews and integrates
them and publishes the result for others to use, using these
commands in addition to the ones needed by participants.</p></div>
<div class="paragraph"><p>This section can also be used by those who respond to <code>git
request-pull</code> or pull-request on GitHub (www.github.com) to
integrate the work of others into their history. An sub-area
lieutenant for a repository will act both as a participant and
as an integrator.</p></div>
<div class="ulist"><ul>
<li>
<p>
<a href="git-am.html">git-am(1)</a> to apply patches e-mailed in from your
    contributors.
</p>
</li>
<li>
<p>
<a href="git-pull.html">git-pull(1)</a> to merge from your trusted lieutenants.
</p>
</li>
<li>
<p>
<a href="git-format-patch.html">git-format-patch(1)</a> to prepare and send suggested
    alternative to contributors.
</p>
</li>
<li>
<p>
<a href="git-revert.html">git-revert(1)</a> to undo botched commits.
</p>
</li>
<li>
<p>
<a href="git-push.html">git-push(1)</a> to publish the bleeding edge.
</p>
</li>
</ul></div>
<div class="sect2">
<h3 id="_examples_3">Examples</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
A typical integrator&#8217;s Git day.
</dt>
<dd>
<div class="listingblock">
<div class="content">
<pre><code>$ git status <b>&lt;1&gt;</b>
$ git branch --no-merged master <b>&lt;2&gt;</b>
$ mailx <b>&lt;3&gt;</b>
&amp; s 2 3 4 5 ./+to-apply
&amp; s 7 8 ./+hold-linus
&amp; q
$ git checkout -b topic/one master
$ git am -3 -i -s ./+to-apply <b>&lt;4&gt;</b>
$ compile/test
$ git checkout -b hold/linus &amp;&amp; git am -3 -i -s ./+hold-linus <b>&lt;5&gt;</b>
$ git checkout topic/one &amp;&amp; git rebase master <b>&lt;6&gt;</b>
$ git checkout pu &amp;&amp; git reset --hard next <b>&lt;7&gt;</b>
$ git merge topic/one topic/two &amp;&amp; git merge hold/linus <b>&lt;8&gt;</b>
$ git checkout maint
$ git cherry-pick master~4 <b>&lt;9&gt;</b>
$ compile/test
$ git tag -s -m "GIT 0.99.9x" v0.99.9x <b>&lt;10&gt;</b>
$ git fetch ko &amp;&amp; for branch in master maint next pu <b>&lt;11&gt;</b>
    do
        git show-branch ko/$branch $branch <b>&lt;12&gt;</b>
    done
$ git push --follow-tags ko <b>&lt;13&gt;</b></code></pre>
</div></div>
<div class="colist arabic"><ol>
<li>
<p>
see what you were in the middle of doing, if anything.
</p>
</li>
<li>
<p>
see which branches haven&#8217;t been merged into <code>master</code> yet.
Likewise for any other integration branches e.g. <code>maint</code>, <code>next</code>
and <code>pu</code> (potential updates).
</p>
</li>
<li>
<p>
read mails, save ones that are applicable, and save others
that are not quite ready (other mail readers are available).
</p>
</li>
<li>
<p>
apply them, interactively, with your sign-offs.
</p>
</li>
<li>
<p>
create topic branch as needed and apply, again with sign-offs.
</p>
</li>
<li>
<p>
rebase internal topic branch that has not been merged to the
master or exposed as a part of a stable branch.
</p>
</li>
<li>
<p>
restart <code>pu</code> every time from the next.
</p>
</li>
<li>
<p>
and bundle topic branches still cooking.
</p>
</li>
<li>
<p>
backport a critical fix.
</p>
</li>
<li>
<p>
create a signed tag.
</p>
</li>
<li>
<p>
make sure master was not accidentally rewound beyond that
already pushed out.
</p>
</li>
<li>
<p>
In the output from <code>git show-branch</code>, <code>master</code> should have
everything <code>ko/master</code> has, and <code>next</code> should have
everything <code>ko/next</code> has, etc.
</p>
</li>
<li>
<p>
push out the bleeding edge, together with new tags that point
into the pushed history.
</p>
</li>
</ol></div>
</dd>
</dl></div>
<div class="paragraph"><p>In this example, the <code>ko</code> shorthand points at the Git maintainer&#8217;s
repository at kernel.org, and looks like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>(in .git/config)
[remote "ko"]
        url = kernel.org:/pub/scm/git/git.git
        fetch = refs/heads/*:refs/remotes/ko/*
        push = refs/heads/master
        push = refs/heads/next
        push = +refs/heads/pu
        push = refs/heads/maint</code></pre>
</div></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_repository_administration_a_id_administration_a">Repository Administration<a id="ADMINISTRATION"></a></h2>
<div class="sectionbody">
<div class="paragraph"><p>A repository administrator uses the following tools to set up
and maintain access to the repository by developers.</p></div>
<div class="ulist"><ul>
<li>
<p>
<a href="git-daemon.html">git-daemon(1)</a> to allow anonymous download from
    repository.
</p>
</li>
<li>
<p>
<a href="git-shell.html">git-shell(1)</a> can be used as a <em>restricted login shell</em>
    for shared central repository users.
</p>
</li>
<li>
<p>
<a href="git-http-backend.html">git-http-backend(1)</a> provides a server side implementation
    of Git-over-HTTP ("Smart http") allowing both fetch and push services.
</p>
</li>
<li>
<p>
<a href="gitweb.html">gitweb(1)</a> provides a web front-end to Git repositories,
    which can be set-up using the <a href="git-instaweb.html">git-instaweb(1)</a> script.
</p>
</li>
</ul></div>
<div class="paragraph"><p><a href="howto/update-hook-example.html">update hook howto</a> has a good
example of managing a shared central repository.</p></div>
<div class="paragraph"><p>In addition there are a number of other widely deployed hosting, browsing
and reviewing solutions such as:</p></div>
<div class="ulist"><ul>
<li>
<p>
gitolite, gerrit code review, cgit and others.
</p>
</li>
</ul></div>
<div class="sect2">
<h3 id="_examples_4">Examples</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
We assume the following in /etc/services
</dt>
<dd>
<div class="listingblock">
<div class="content">
<pre><code>$ grep 9418 /etc/services
git             9418/tcp                # Git Version Control System</code></pre>
</div></div>
</dd>
<dt class="hdlist1">
Run git-daemon to serve /pub/scm from inetd.
</dt>
<dd>
<div class="listingblock">
<div class="content">
<pre><code>$ grep git /etc/inetd.conf
git     stream  tcp     nowait  nobody \
  /usr/bin/git-daemon git-daemon --inetd --export-all /pub/scm</code></pre>
</div></div>
<div class="paragraph"><p>The actual configuration line should be on one line.</p></div>
</dd>
<dt class="hdlist1">
Run git-daemon to serve /pub/scm from xinetd.
</dt>
<dd>
<div class="listingblock">
<div class="content">
<pre><code>$ cat /etc/xinetd.d/git-daemon
# default: off
# description: The Git server offers access to Git repositories
service git
{
        disable = no
        type            = UNLISTED
        port            = 9418
        socket_type     = stream
        wait            = no
        user            = nobody
        server          = /usr/bin/git-daemon
        server_args     = --inetd --export-all --base-path=/pub/scm
        log_on_failure  += USERID
}</code></pre>
</div></div>
<div class="paragraph"><p>Check your xinetd(8) documentation and setup, this is from a Fedora system.
Others might be different.</p></div>
</dd>
<dt class="hdlist1">
Give push/pull only access to developers using git-over-ssh.
</dt>
<dd>
<p>
e.g. those using:
<code>$ git push/pull ssh://host.xz/pub/scm/project</code>
</p>
<div class="listingblock">
<div class="content">
<pre><code>$ grep git /etc/passwd <b>&lt;1&gt;</b>
alice:x:1000:1000::/home/alice:/usr/bin/git-shell
bob:x:1001:1001::/home/bob:/usr/bin/git-shell
cindy:x:1002:1002::/home/cindy:/usr/bin/git-shell
david:x:1003:1003::/home/david:/usr/bin/git-shell
$ grep git /etc/shells <b>&lt;2&gt;</b>
/usr/bin/git-shell</code></pre>
</div></div>
<div class="colist arabic"><ol>
<li>
<p>
log-in shell is set to /usr/bin/git-shell, which does not
allow anything but <code>git push</code> and <code>git pull</code>.  The users require
ssh access to the machine.
</p>
</li>
<li>
<p>
in many distributions /etc/shells needs to list what is used
as the login shell.
</p>
</li>
</ol></div>
</dd>
<dt class="hdlist1">
CVS-style shared repository.
</dt>
<dd>
<div class="listingblock">
<div class="content">
<pre><code>$ grep git /etc/group <b>&lt;1&gt;</b>
git:x:9418:alice,bob,cindy,david
$ cd /home/devo.git
$ ls -l <b>&lt;2&gt;</b>
  lrwxrwxrwx   1 david git    17 Dec  4 22:40 HEAD -&gt; refs/heads/master
  drwxrwsr-x   2 david git  4096 Dec  4 22:40 branches
  -rw-rw-r--   1 david git    84 Dec  4 22:40 config
  -rw-rw-r--   1 david git    58 Dec  4 22:40 description
  drwxrwsr-x   2 david git  4096 Dec  4 22:40 hooks
  -rw-rw-r--   1 david git 37504 Dec  4 22:40 index
  drwxrwsr-x   2 david git  4096 Dec  4 22:40 info
  drwxrwsr-x   4 david git  4096 Dec  4 22:40 objects
  drwxrwsr-x   4 david git  4096 Nov  7 14:58 refs
  drwxrwsr-x   2 david git  4096 Dec  4 22:40 remotes
$ ls -l hooks/update <b>&lt;3&gt;</b>
  -r-xr-xr-x   1 david git  3536 Dec  4 22:40 update
$ cat info/allowed-users <b>&lt;4&gt;</b>
refs/heads/master       alice\|cindy
refs/heads/doc-update   bob
refs/tags/v[0-9]*       david</code></pre>
</div></div>
<div class="colist arabic"><ol>
<li>
<p>
place the developers into the same git group.
</p>
</li>
<li>
<p>
and make the shared repository writable by the group.
</p>
</li>
<li>
<p>
use update-hook example by Carl from Documentation/howto/
for branch policy control.
</p>
</li>
<li>
<p>
alice and cindy can push into master, only bob can push into doc-update.
david is the release manager and is the only person who can
create and push version tags.
</p>
</li>
</ol></div>
</dd>
</dl></div>
</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 2017-01-19 15:32:59 PST
</div>
</div>
</body>
</html>
