<?xml version="1.0" encoding="UTF-8"?>
<!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.10" />
<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. A 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
 2018-07-19 05:16:04 JST
</div>
</div>
</body>
</html>
