Commit Diff


commit - /dev/null
commit + 8797b2280033741ca768a2317dbd0a0312e73c4e
blob - /dev/null
blob + 4c402acc49affdd54c68c8f3fb2d6b50700a0a53 (mode 644)
--- /dev/null
+++ git-repository.5.html
@@ -0,0 +1,212 @@
+<!DOCTYPE html>
+<html>
+<!-- This is an automatically generated file.  Do not edit.
+   Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+  
+   Permission to use, copy, modify, and distribute this software for any
+   purpose with or without fee is hereby granted, provided that the above
+   copyright notice and this permission notice appear in all copies.
+  
+   THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+   WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+   MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+   ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+   -->
+<head>
+  <meta charset="utf-8"/>
+  <style>
+    table.head, table.foot { width: 100%; }
+    td.head-rtitle, td.foot-os { text-align: right; }
+    td.head-vol { text-align: center; }
+    div.Pp { margin: 1ex 0ex; }
+    div.Nd, div.Bf, div.Op { display: inline; }
+    span.Pa, span.Ad { font-style: italic; }
+    span.Ms { font-weight: bold; }
+    dl.Bl-diag > dt { font-weight: bold; }
+    code.Nm, code.Fl, code.Cm, code.Ic, code.In, code.Fd, code.Fn,
+    code.Cd { font-weight: bold; font-family: inherit; }
+  </style>
+  <title>GIT-REPOSITORY(5)</title>
+</head>
+<body>
+<table class="head">
+  <tr>
+    <td class="head-ltitle">GIT-REPOSITORY(5)</td>
+    <td class="head-vol">File Formats Manual</td>
+    <td class="head-rtitle">GIT-REPOSITORY(5)</td>
+  </tr>
+</table>
+<div class="manual-text">
+<section class="Sh">
+<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
+<code class="Nm">git-repository</code> &#x2014;
+<div class="Nd">Git repository format</div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+A Git repository stores a series of versioned snapshots of a file hierarchy.
+  Conceptually, the repository's data model is a directed acyclic graph which
+  contains three types of objects as nodes:
+<dl class="Bl-tag">
+  <dt>Blobs</dt>
+  <dd>The content of tracked files is stored in objects of type
+      <i class="Em">blob</i>.</dd>
+  <dt>Trees</dt>
+  <dd>A <i class="Em">tree</i> object points to any number of such blobs, and
+      also to other trees in order to represent a hierarchy of files and
+      directories.</dd>
+  <dt>Commits</dt>
+  <dd>A <i class="Em">commit</i> object points to the root element of one tree,
+      and thus records the state of this entire tree as a snapshot. Commit
+      objects are chained together to form lines of version control history.
+      Most commits have just one successor commit, but commits may be succeeded
+      by an arbitrary number of subsequent commits so that diverging lines of
+      version control history, known as <i class="Em">branches</i>, can be
+      represented. A commit which precedes another commit is referred to as that
+      other commit's <i class="Em">parent commit</i>. A commit with multiple
+      parents unites disparate lines of history and is known as a
+      <i class="Em">merge commit</i>.</dd>
+</dl>
+<p class="Pp">Each object is identified by a SHA1 hash calculated over both the
+    object's header and the data stored in the object.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="OBJECT_STORAGE"><a class="permalink" href="#OBJECT_STORAGE">OBJECT
+  STORAGE</a></h1>
+Loose objects are stored as individual files beneath the directory
+  <span class="Pa">objects</span>, spread across 256 sub-directories named after
+  the 256 possible hexadecimal values of the first byte of an object identifier.
+  The name of the loose object file corresponds to the remaining hexadecimal
+  byte values of the object's identifier.
+<p class="Pp">A loose object file begins with a header which specifies the type
+    of object as an ASCII string, followed by an ASCII space character, followed
+    by the object data's size encoded as an ASCII number string. The header is
+    terminated by a <b class="Sy">NUL</b> character, and the remainder of the
+    file contains object data. Loose objects files are compressed with
+    <a class="Xr">deflate(3)</a>.</p>
+<p class="Pp">Multiple objects can be bundled in a <i class="Em">pack file</i>
+    for better disk space efficiency and increased run-time performance. The
+    pack file format knows two additional types of objects in addition to blobs,
+    trees, and commits:</p>
+<dl class="Bl-tag">
+  <dt>Offset Delta Objects</dt>
+  <dd>This object is represented as a delta against another object in the same
+      pack file. This other object is referred to by its offset in the pack
+      file.</dd>
+  <dt>Reference Delta Objects</dt>
+  <dd>This object is represented as a delta against another object in the same
+      pack file. The other object is referred to by its SHA1 object
+    identifier.</dd>
+</dl>
+<p class="Pp">Pack files are self-contained and may not refer to loose objects
+    or objects stored in other pack files. Deltified objects may refer to other
+    deltified objects as their delta base, forming chains of deltas. The
+    ultimate base of a delta chain must be an object of the same type as the
+    original object which is stored in deltified form.</p>
+<p class="Pp">Each pack file is accompanied by a corresponding
+    <i class="Em">pack index</i> file, which lists the IDs and offsets of all
+    objects contained in the pack file.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="REFERENCES"><a class="permalink" href="#REFERENCES">REFERENCES</a></h1>
+A reference associates a name with an object ID. A prominent use of references
+  is providing names to branches in the repository by pointing at commit objects
+  which represent the current tip commit of a branch. Because references may
+  point to arbitrary object IDs their use is not limited to branches.
+<p class="Pp">The name is a UTF-8 string with the following disallowed
+    characters: &#x2018;&#x00A0;&#x2019; (space), ~ (tilde), ^ (caret), :
+    (colon), ? (question mark), * (asterisk), [ (opening square bracket), \
+    (backslash). Additionally, the name may not contain the two-character
+    sequences //, .. , and @{.</p>
+<p class="Pp">Reference names may optionally have multiple components separated
+    by the / (slash) character, forming a hierarchy of reference namespaces. Got
+    reserves the <span class="Pa">got/</span> reference namespace for internal
+    use.</p>
+<p class="Pp">A symbolic reference associates a name with the name of another
+    reference. The most prominent example is the <span class="Pa">HEAD</span>
+    reference which points at the name of the repository's default branch
+    reference.</p>
+<p class="Pp">References are stored either as a plain file within the
+    repository, typically under the <span class="Pa">refs/</span> directory, or
+    in the <span class="Pa">packed-refs</span> file which contains one reference
+    definition per line.</p>
+<p class="Pp">Any object which is not directly or indirectly reachable via a
+    reference is subject to deletion by Git's garbage collector.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="FILES"><a class="permalink" href="#FILES">FILES</a></h1>
+<dl class="Bl-tag Bl-compact">
+  <dt><span class="Pa">HEAD</span></dt>
+  <dd>A reference to the current head commit of the Git work tree. In bare
+      repositories, this files serves as a default reference.</dd>
+  <dt><span class="Pa">ORIG_HEAD</span></dt>
+  <dd>Reference to original head commit. Set by some Git operations.</dd>
+  <dt><span class="Pa">FETCH_HEAD</span></dt>
+  <dd>Reference to a branch tip commit most recently fetched from another
+      repository.</dd>
+  <dt><span class="Pa">branches/</span></dt>
+  <dd>Legacy directory used by the deprecated Gogito Git interface.</dd>
+  <dt><span class="Pa">config</span></dt>
+  <dd>Git configuration file. See <a class="Xr">git-config(1)</a>.</dd>
+  <dt><span class="Pa">description</span></dt>
+  <dd>A human-readable description of the repository.</dd>
+  <dt><span class="Pa">hooks/</span></dt>
+  <dd>This directory contains hook scripts to run when certain events
+    occur.</dd>
+  <dt><span class="Pa">index</span></dt>
+  <dd>The file index used by <a class="Xr">git(1)</a>. This file is not used by
+      <a class="Xr">got(1)</a>, which uses the <a class="Xr">got-worktree(5)</a>
+      file index instead.</dd>
+  <dt><span class="Pa">info</span></dt>
+  <dd>Various configuration items.</dd>
+  <dt><span class="Pa">logs/</span></dt>
+  <dd>Directory where reflogs are stored.</dd>
+  <dt><span class="Pa">objects/</span></dt>
+  <dd>Loose and packed objects are stored in this directory.</dd>
+  <dt><span class="Pa">packed-refs</span></dt>
+  <dd>A file which stores references. Corresponding on-disk references take
+      precedence over those stored here.</dd>
+  <dt><span class="Pa">refs/</span></dt>
+  <dd>The default directory to store references in.</dd>
+</dl>
+<p class="Pp">A typical Git repository exposes a work tree which allows the user
+    to make changes to versioned files and create new commits. When a Git work
+    tree is present, the actual repository data is stored in a
+    <span class="Pa">.git</span> subfolder of the repository's root directory. A
+    Git repository without a work tree is known as a &#x201C;bare&#x201D;
+    repository. <a class="Xr">got(1)</a> does not make use of Git's work tree
+    and treats every repository as if it was bare.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+  ALSO</a></h1>
+<a class="Xr">got(1)</a>, <a class="Xr">deflate(3)</a>,
+  <a class="Xr">SHA1(3)</a>, <a class="Xr">got-worktree(5)</a>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
+The Git repository format was initially designed by Linus Torvalds in 2005 and
+  has since been extended by various people involved in the development of the
+  Git version control system.
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CAVEATS"><a class="permalink" href="#CAVEATS">CAVEATS</a></h1>
+The particular set of disallowed characters in reference names is a consequence
+  of design choices made for the command-line interface of
+  <a class="Xr">git(1)</a>. The same characters are disallowed by Got for
+  compatibility purposes. Got additionaly prevents users from creating reference
+  names with a leading - (dash) character, because this is rarely intended and
+  not considered useful.
+</section>
+</div>
+<table class="foot">
+  <tr>
+    <td class="foot-date">August 4, 2019</td>
+    <td class="foot-os">OpenBSD 6.5</td>
+  </tr>
+</table>
+</body>
+</html>
blob - /dev/null
blob + 7cf6d3904d98ef99fa3f0a28e5d1e40683739145 (mode 644)
--- /dev/null
+++ goals.html
@@ -0,0 +1,44 @@
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+
+<title>Game of Trees (Got): Goals</title>
+<meta name="description" content="Game of Trees (Got) Goals">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<link rel="stylesheet" type="text/css" href="openbsd.css">
+<link rel="canonical" href="https://stsp.name/got/goals.html">
+
+<h2>
+<a href="index.html">
+<i>Game of Trees</i></a>
+Goals
+</h2>
+<hr>
+
+<ul>
+<li>
+Provide an intuitive command interface for working with
+<a href="https://git-scm.com">Git</a> repositories.
+<ul>
+<li>Provide a single interface usable by both Git experts and non-experts.
+</ul>
+<li>
+Remain on-disk compatible with bare Git repositories.
+<ul>
+<li>Don't bother with Git-compatibility beyond this requirement.
+</ul>
+<li>
+Follow OpenBSD's security practices and coding style.
+<ul>
+<li>
+Use privilege separation when parsing data from network or disk.
+<li>Use <a href="https://man.openbsd.org/pledge">pledge(2)</a> and
+<a href="https://man.openbsd.org/unveil">unveil(2)</a>.
+<li>Use a peer-reviewed development process.
+</ul>
+<li>
+Consider workflow requirements of OpenBSD developers.
+<ul>
+<li>Implement strictly required features only.
+</ul>
+</ul>
blob - /dev/null
blob + 640cca1ba2eba696debc48075c713934560f42d6 (mode 644)
--- /dev/null
+++ got-worktree.5.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html>
+<html>
+<!-- This is an automatically generated file.  Do not edit.
+   Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+  
+   Permission to use, copy, modify, and distribute this software for any
+   purpose with or without fee is hereby granted, provided that the above
+   copyright notice and this permission notice appear in all copies.
+  
+   THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+   WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+   MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+   ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+   -->
+<head>
+  <meta charset="utf-8"/>
+  <style>
+    table.head, table.foot { width: 100%; }
+    td.head-rtitle, td.foot-os { text-align: right; }
+    td.head-vol { text-align: center; }
+    div.Pp { margin: 1ex 0ex; }
+    div.Nd, div.Bf, div.Op { display: inline; }
+    span.Pa, span.Ad { font-style: italic; }
+    span.Ms { font-weight: bold; }
+    dl.Bl-diag > dt { font-weight: bold; }
+    code.Nm, code.Fl, code.Cm, code.Ic, code.In, code.Fd, code.Fn,
+    code.Cd { font-weight: bold; font-family: inherit; }
+  </style>
+  <title>GOT-WORKTREE(5)</title>
+</head>
+<body>
+<table class="head">
+  <tr>
+    <td class="head-ltitle">GOT-WORKTREE(5)</td>
+    <td class="head-vol">File Formats Manual</td>
+    <td class="head-rtitle">GOT-WORKTREE(5)</td>
+  </tr>
+</table>
+<div class="manual-text">
+<section class="Sh">
+<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
+<code class="Nm">got-worktree</code> &#x2014;
+<div class="Nd">got worktree format</div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+A got <i class="Em">work tree</i> stores a file hierarchy which corresponds to a
+  versioned snapshot stored in a Git repository. The work tree's meta data is
+  stored in the <span class="Pa">.got</span> directory. A work tree is created
+  with <code class="Cm">got checkout</code> and is required to make changes to a
+  Git repository with <a class="Xr">got(1)</a>.
+<p class="Pp">A work tree stores the path to its Git repository, the name of a
+    reference to the branch which files were checked out from, and the ID of a
+    commit on this branch known as the <i class="Em">base commit</i>.</p>
+<p class="Pp">File meta-data is stored in a structured file called the
+    <i class="Em">file index</i> and tracks the status of file modifications,
+    additions, and deletions, relative to the base commit in the repository. The
+    file index contains a series of records, and each such record contains the
+    following status information for a particular file:</p>
+<dl class="Bl-tag">
+  <dt>Copy of filesystem meta-data</dt>
+  <dd>Timestamp, file size, and file ownership information from
+      <a class="Xr">stat(2)</a>. This is only used to detect file modifications
+      and is never applied back to the filesystem. File permissions are not
+      tracked, except for the executable bit. When versioned files are checked
+      out into the work tree, the current <a class="Xr">umask(2)</a> is
+    heeded.</dd>
+  <dt>Blob object ID</dt>
+  <dd>The SHA1 hash of the blob object which corresponds to the contents of this
+      file in the repository. The hash is stored as binary data.</dd>
+  <dt>Commit object ID</dt>
+  <dd>The SHA1 hash of the commit object the file was checked out from. The hash
+      is stored as binary data. This data is used to detect past incomplete
+      update operations. Entries which do not match the work tree's base commit
+      may still need to be updated to match file content stored in the base
+      commit.</dd>
+  <dt>Flags</dt>
+  <dd>A flags field (intentionally not documented).</dd>
+  <dt>Path data</dt>
+  <dd>The path of the entry, relative to the work tree root. Path data is of
+      variable length and NUL-padded to a multiple of 8 bytes.</dd>
+</dl>
+<p class="Pp">A corrupt or missing file index can be recreated on demand with
+    <code class="Cm">got update</code>. When the file index is modified, it is
+    read into memory in its entirety, modified in place, and written to a
+    temporary file. This temporary file is then moved on top of the old file
+    index with <a class="Xr">rename(2)</a>. This ensures that no other processes
+    see an inconsistent file index which is in the process of being written.</p>
+<p class="Pp">Work tree meta data must only be modified while the work tree's
+    <span class="Pa">lock</span> file has been exclusively locked with
+    <a class="Xr">lockf(3)</a>.</p>
+<p class="Pp">Each work tree has a universal unique identifier. When a work tree
+    is checked out or updated, this identifier is used to create a reference to
+    the current base commit in the Git repository. The presence of this
+    reference prevents Git garbage collectors from discarding the base commit
+    and any objects it refers to. When a work tree is no longer needed its
+    reference can be deleted from the Git repository with <code class="Cm">got
+    ref -d</code>.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="FILES"><a class="permalink" href="#FILES">FILES</a></h1>
+<dl class="Bl-tag Bl-compact">
+  <dt><span class="Pa">.got</span></dt>
+  <dd>Meta-data directory where all files listed below reside.</dd>
+  <dt><span class="Pa">base-commit</span></dt>
+  <dd>SHA1 hex-string representation of the current base commit.</dd>
+  <dt><span class="Pa">file-index</span></dt>
+  <dd>File status information.</dd>
+  <dt><span class="Pa">format</span></dt>
+  <dd>Work tree format number.</dd>
+  <dt><span class="Pa">head-ref</span></dt>
+  <dd>Name of the reference to the current branch.</dd>
+  <dt><span class="Pa">lock</span></dt>
+  <dd>Lock file to obtain exclusive write access to meta data.</dd>
+  <dt><span class="Pa">path-prefix</span></dt>
+  <dd>Path inside repository the work tree was checked out from.</dd>
+  <dt><span class="Pa">repository</span></dt>
+  <dd>Path to the repository the work tree was checked out from.</dd>
+  <dt><span class="Pa">uuid</span></dt>
+  <dd>A universal unique identifier for the work tree.</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+  ALSO</a></h1>
+<a class="Xr">got(1)</a>, <a class="Xr">rename(2)</a>,
+  <a class="Xr">stat(2)</a>, <a class="Xr">umask(2)</a>,
+  <a class="Xr">lockf(3)</a>, <a class="Xr">git-repository(5)</a>
+</section>
+</div>
+<table class="foot">
+  <tr>
+    <td class="foot-date">August 4, 2019</td>
+    <td class="foot-os">OpenBSD 6.5</td>
+  </tr>
+</table>
+</body>
+</html>
blob - /dev/null
blob + b6bb9cac6ed249ef0cad685b99f35ca41c96dc20 (mode 644)
--- /dev/null
+++ got.1.html
@@ -0,0 +1,1238 @@
+<!DOCTYPE html>
+<html>
+<!-- This is an automatically generated file.  Do not edit.
+   Copyright (c) 2017 Martin Pieuchot
+   Copyright (c) 2018, 2019 Stefan Sperling
+  
+   Permission to use, copy, modify, and distribute this software for any
+   purpose with or without fee is hereby granted, provided that the above
+   copyright notice and this permission notice appear in all copies.
+  
+   THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+   WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+   MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+   ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+   -->
+<head>
+  <meta charset="utf-8"/>
+  <style>
+    table.head, table.foot { width: 100%; }
+    td.head-rtitle, td.foot-os { text-align: right; }
+    td.head-vol { text-align: center; }
+    div.Pp { margin: 1ex 0ex; }
+    div.Nd, div.Bf, div.Op { display: inline; }
+    span.Pa, span.Ad { font-style: italic; }
+    span.Ms { font-weight: bold; }
+    dl.Bl-diag > dt { font-weight: bold; }
+    code.Nm, code.Fl, code.Cm, code.Ic, code.In, code.Fd, code.Fn,
+    code.Cd { font-weight: bold; font-family: inherit; }
+  </style>
+  <title>GOT(1)</title>
+</head>
+<body>
+<table class="head">
+  <tr>
+    <td class="head-ltitle">GOT(1)</td>
+    <td class="head-vol">General Commands Manual</td>
+    <td class="head-rtitle">GOT(1)</td>
+  </tr>
+</table>
+<div class="manual-text">
+<section class="Sh">
+<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
+<code class="Nm">got</code> &#x2014;
+<div class="Nd">game of trees</div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<table class="Nm">
+  <tr>
+    <td><code class="Nm">got</code></td>
+    <td><var class="Ar">command</var> [<code class="Fl">-h</code>]
+      [<var class="Ar">arg ...</var>]</td>
+  </tr>
+</table>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<code class="Nm">got</code> is a version control system which stores the history
+  of tracked files in a Git repository, as used by the Git version control
+  system. This repository format is described in
+  <a class="Xr">git-repository(5)</a>.
+<p class="Pp"><code class="Nm">got</code> is a &#x201C;distributed&#x201D;
+    version control system because every copy of a repository is writeable.
+    Modifications made to files can be synchronized between repositories at any
+    time.</p>
+<p class="Pp">Files managed by <code class="Nm">got</code> must be checked out
+    from the repository for modification. Checked out files are stored in a
+    <i class="Em">work tree</i> which can be placed at an arbitrary directory in
+    the filesystem hierarchy. The on-disk format of this work tree is described
+    in <a class="Xr">got-worktree(5)</a>.</p>
+<p class="Pp"><code class="Nm">got</code> provides global and command-specific
+    options. Global options must preceed the command name, and are as
+  follows:</p>
+<dl class="Bl-tag">
+  <dt><a class="permalink" href="#h"><code class="Fl" id="h">-h</code></a></dt>
+  <dd>Display usage information.</dd>
+  <dt><a class="permalink" href="#V"><code class="Fl" id="V">-V</code></a></dt>
+  <dd>Display program version and exit immediately.</dd>
+</dl>
+<p class="Pp">The commands for <code class="Nm">got</code> are as follows:</p>
+<dl class="Bl-tag">
+  <dt><a class="permalink" href="#init"><code class="Cm" id="init">init</code></a>
+    <var class="Ar">repository-path</var></dt>
+  <dd>Create a new empty repository at the specified
+      <var class="Ar">repository-path</var>.
+    <p class="Pp">After <code class="Cm">got init</code>, the
+        <code class="Cm">got import</code> command must be used to populate the
+        empty repository before <code class="Cm">got checkout</code> can be
+        used.</p>
+  </dd>
+  <dt><a class="permalink" href="#in"><code class="Cm" id="in">in</code></a></dt>
+  <dd>Short alias for <code class="Cm">init</code>.</dd>
+  <dt><a class="permalink" href="#import"><code class="Cm" id="import">import</code></a>
+    [<code class="Fl">-b</code> <var class="Ar">branch</var>]
+    [<code class="Fl">-m</code> <var class="Ar">message</var>]
+    [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+    [<code class="Fl">-I</code> <var class="Ar">pattern</var>]
+    <var class="Ar">directory</var></dt>
+  <dd>Create an initial commit in a repository from the file hierarchy within
+      the specified <var class="Ar">directory</var>. The created commit will not
+      have any parent commits, i.e. it will be a root commit. Also create a new
+      reference which provides a branch name for the newly created commit. Show
+      the path of each imported file to indicate progress.
+    <p class="Pp">The <code class="Cm">got import</code> command requires the
+        <code class="Ev">GOT_AUTHOR</code> environment variable to be set.</p>
+    <p class="Pp">The options for <code class="Cm">got import</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#b"><code class="Fl" id="b">-b</code></a>
+        <var class="Ar">branch</var></dt>
+      <dd>Create the specified <var class="Ar">branch</var> instead of creating
+          the default branch &#x201C;master&#x201D;. Use of this option is
+          required if the &#x201C;master&#x201D; branch already exists.</dd>
+      <dt><a class="permalink" href="#m"><code class="Fl" id="m">-m</code></a>
+        <var class="Ar">message</var></dt>
+      <dd>Use the specified log message when creating the new commit. Without
+          the <code class="Fl">-m</code> option, <code class="Cm">got
+          import</code> opens a temporary file in an editor where a log message
+          can be written.</dd>
+      <dt><a class="permalink" href="#r"><code class="Fl" id="r">-r</code></a>
+        <var class="Ar">repository-path</var></dt>
+      <dd>Use the repository at the specified path. If not specified, assume the
+          repository is located at or above the current working directory.</dd>
+      <dt><a class="permalink" href="#I"><code class="Fl" id="I">-I</code></a>
+        <var class="Ar">pattern</var></dt>
+      <dd>Ignore files or directories with a name which matches the specified
+          <var class="Ar">pattern</var>. This option may be specified multiple
+          times to build a list of ignore patterns. The
+          <var class="Ar">pattern</var> follows the globbing rules documented in
+          <a class="Xr">glob(7)</a>.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#im"><code class="Cm" id="im">im</code></a></dt>
+  <dd>Short alias for <code class="Cm">import</code>.</dd>
+  <dt><a class="permalink" href="#checkout"><code class="Cm" id="checkout">checkout</code></a>
+    [<code class="Fl">-b</code> <var class="Ar">branch</var>]
+    [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+    [<code class="Fl">-p</code> <var class="Ar">path-prefix</var>]
+    <var class="Ar">repository-path</var>
+    [<var class="Ar">work-tree-path</var>]</dt>
+  <dd>Copy files from a repository into a new work tree. If the
+      <var class="Ar">work tree path</var> is not specified, either use the last
+      component of <var class="Ar">repository path</var>, or if a
+      <var class="Ar">path prefix</var> was specified use the last component of
+      <var class="Ar">path prefix</var>.
+    <p class="Pp">The options for <code class="Cm">got checkout</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#b_2"><code class="Fl" id="b_2">-b</code></a>
+        <var class="Ar">branch</var></dt>
+      <dd>Check out files from a commit on the specified
+          <var class="Ar">branch</var>. If this option is not specified, a
+          branch resolved via the repository's HEAD reference will be used.</dd>
+      <dt><a class="permalink" href="#c"><code class="Fl" id="c">-c</code></a>
+        <var class="Ar">commit</var></dt>
+      <dd>Check out files from the specified <var class="Ar">commit</var> on the
+          selected branch. The expected argument is a commit ID SHA1 hash or an
+          existing reference which will be resolved to a commit ID. An
+          abbreviated hash argument will be expanded to a full SHA1 hash
+          automatically, provided the abbreviation is unique. If this option is
+          not specified, the most recent commit on the selected branch will be
+          used.</dd>
+      <dt><a class="permalink" href="#p"><code class="Fl" id="p">-p</code></a>
+        <var class="Ar">path-prefix</var></dt>
+      <dd>Restrict the work tree to a subset of the repository's tree hierarchy.
+          Only files beneath the specified <var class="Ar">path-prefix</var>
+          will be checked out.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#co"><code class="Cm" id="co">co</code></a></dt>
+  <dd>Short alias for <code class="Cm">checkout</code>.</dd>
+  <dt><a class="permalink" href="#update"><code class="Cm" id="update">update</code></a>
+    [<code class="Fl">-b</code> <var class="Ar">branch</var>]
+    [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+    [<var class="Ar">path ...</var>]</dt>
+  <dd>Update an existing work tree to a different commit. Show the status of
+      each affected file, using the following status codes:
+    <table class="Bl-column">
+      <tr>
+        <td>U</td>
+        <td>file was updated and contained no local changes</td>
+      </tr>
+      <tr>
+        <td>G</td>
+        <td>file was updated and local changes were merged cleanly</td>
+      </tr>
+      <tr>
+        <td>C</td>
+        <td>file was updated and conflicts occurred during merge</td>
+      </tr>
+      <tr>
+        <td>D</td>
+        <td>file was deleted</td>
+      </tr>
+      <tr>
+        <td>A</td>
+        <td>new file was added</td>
+      </tr>
+      <tr>
+        <td>~</td>
+        <td>versioned file is obstructed by a non-regular file</td>
+      </tr>
+      <tr>
+        <td>!</td>
+        <td>a missing versioned file was restored</td>
+      </tr>
+    </table>
+    <p class="Pp">If no <var class="Ar">path</var> is specified, update the
+        entire work tree. Otherwise, restrict the update operation to files at
+        or within the specified paths. Each path is required to exist in the
+        update operation's target commit. Files in the work tree outside
+        specified paths will remain unchanged and will retain their previously
+        recorded base commit. Some <code class="Nm">got</code> commands may
+        refuse to run while the work tree contains files from multiple base
+        commits. The base commit of such a work tree can be made consistent by
+        running <code class="Cm">got update</code> across the entire work tree.
+        Specifying a <var class="Ar">path</var> is incompatible with the
+        <code class="Fl">-b</code> option.</p>
+    <p class="Pp"><code class="Cm">got update</code> cannot update paths with
+        staged changes. If changes have been staged with <code class="Cm">got
+        stage</code>, these changes must first be comitted with
+        <code class="Cm">got commit</code> or unstaged with <code class="Cm">got
+        unstage</code>.</p>
+    <p class="Pp">The options for <code class="Cm">got update</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#b_3"><code class="Fl" id="b_3">-b</code></a>
+        <var class="Ar">branch</var></dt>
+      <dd>Switch the work tree's branch reference to the specified
+          <var class="Ar">branch</var> before updating the work tree. This
+          option requires that all paths in the work tree are updated.</dd>
+      <dt><a class="permalink" href="#c_2"><code class="Fl" id="c_2">-c</code></a>
+        <var class="Ar">commit</var></dt>
+      <dd>Update the work tree to the specified <var class="Ar">commit</var>.
+          The expected argument is a commit ID SHA1 hash or an existing
+          reference which will be resolved to a commit ID. An abbreviated hash
+          argument will be expanded to a full SHA1 hash automatically, provided
+          the abbreviation is unique. If this option is not specified, the most
+          recent commit on the work tree's branch will be used.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#up"><code class="Cm" id="up">up</code></a></dt>
+  <dd>Short alias for <code class="Cm">update</code>.</dd>
+  <dt><a class="permalink" href="#status"><code class="Cm" id="status">status</code></a>
+    [<var class="Ar">path ...</var>]</dt>
+  <dd>Show the current modification status of files in a work tree, using the
+      following status codes:
+    <table class="Bl-column">
+      <tr>
+        <td>M</td>
+        <td>modified file</td>
+      </tr>
+      <tr>
+        <td>A</td>
+        <td>file scheduled for addition in next commit</td>
+      </tr>
+      <tr>
+        <td>D</td>
+        <td>file scheduled for deletion in next commit</td>
+      </tr>
+      <tr>
+        <td>C</td>
+        <td>modified or added file which contains merge conflicts</td>
+      </tr>
+      <tr>
+        <td>!</td>
+        <td>versioned file was expected on disk but is missing</td>
+      </tr>
+      <tr>
+        <td>~</td>
+        <td>versioned file is obstructed by a non-regular file</td>
+      </tr>
+      <tr>
+        <td>?</td>
+        <td>unversioned item not tracked by <code class="Nm">got</code></td>
+      </tr>
+    </table>
+    <p class="Pp">If no <var class="Ar">path</var> is specified, show
+        modifications in the entire work tree. Otherwise, show modifications at
+        or within the specified paths.</p>
+    <p class="Pp">If changes have been staged with <code class="Cm">got
+        stage</code>, staged changes are shown in the second output column,
+        using the following status codes:</p>
+    <table class="Bl-column">
+      <tr>
+        <td>M</td>
+        <td>file modification is staged</td>
+      </tr>
+      <tr>
+        <td>A</td>
+        <td>file addition is staged</td>
+      </tr>
+      <tr>
+        <td>D</td>
+        <td>file deletion is staged</td>
+      </tr>
+    </table>
+    <p class="Pp">If a path has staged changes, modification status of files
+        shown in the first output column is relative to the staged changes:</p>
+    <table class="Bl-column">
+      <tr>
+        <td>MM</td>
+        <td>modified file was modified again after being staged</td>
+      </tr>
+      <tr>
+        <td>MA</td>
+        <td>added file was modified after being staged</td>
+      </tr>
+    </table>
+  </dd>
+  <dt><a class="permalink" href="#st"><code class="Cm" id="st">st</code></a></dt>
+  <dd>Short alias for <code class="Cm">status</code>.</dd>
+  <dt><a class="permalink" href="#log"><code class="Cm" id="log">log</code></a>
+    [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+    [<code class="Fl">-C</code> <var class="Ar">number</var>]
+    [<code class="Fl">-f</code>] [<code class="Fl">-l</code>
+    <var class="Ar">N</var>] [<code class="Fl">-p</code>]
+    [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+    [<var class="Ar">path</var>]</dt>
+  <dd>Display history of a repository. If a <var class="Ar">path</var> is
+      specified, show only commits which modified this path.
+    <p class="Pp">The options for <code class="Cm">got log</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#c_3"><code class="Fl" id="c_3">-c</code></a>
+        <var class="Ar">commit</var></dt>
+      <dd>Start traversing history at the specified
+          <var class="Ar">commit</var>. The expected argument is a commit ID
+          SHA1 hash or an existing reference which will be resolved to a commit
+          ID. An abbreviated hash argument will be expanded to a full SHA1 hash
+          automatically, provided the abbreviation is unique. If this option is
+          not specified, default to the work tree's current branch if invoked in
+          a work tree, or to the repository's HEAD reference.</dd>
+      <dt><a class="permalink" href="#C"><code class="Fl" id="C">-C</code></a>
+        <var class="Ar">number</var></dt>
+      <dd>Set the number of context lines shown in diffs with
+          <code class="Fl">-p</code>. By default, 3 lines of context are
+        shown.</dd>
+      <dt><a class="permalink" href="#f"><code class="Fl" id="f">-f</code></a></dt>
+      <dd>Restrict history traversal to the first parent of each commit. This
+          shows the linear history of the current branch only. Merge commits
+          which affected the current branch will be shown but individual commits
+          which originated on other branches will be omitted.</dd>
+      <dt><a class="permalink" href="#l"><code class="Fl" id="l">-l</code></a>
+        <var class="Ar">N</var></dt>
+      <dd>Limit history traversal to a given number of commits.</dd>
+      <dt><a class="permalink" href="#p_2"><code class="Fl" id="p_2">-p</code></a></dt>
+      <dd>Display the patch of modifications made in each commit.</dd>
+      <dt><a class="permalink" href="#r_2"><code class="Fl" id="r_2">-r</code></a>
+        <var class="Ar">repository-path</var></dt>
+      <dd>Use the repository at the specified path. If not specified, assume the
+          repository is located at or above the current working directory. If
+          this directory is a <code class="Nm">got</code> work tree, use the
+          repository path associated with this work tree.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#diff"><code class="Cm" id="diff">diff</code></a>
+    [<code class="Fl">-C</code> <var class="Ar">number</var>]
+    [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+    [<code class="Fl">-s</code>] [<var class="Ar">object1</var>
+    <var class="Ar">object2</var> | <var class="Ar">path</var>]</dt>
+  <dd>When invoked within a work tree with less than two arguments, display
+      uncommitted changes in the work tree. If a <var class="Ar">path</var> is
+      specified, only show changes within this path.
+    <p class="Pp">If two arguments are provided, treat each argument as a
+        reference, or an object ID SHA1 hash, and display differences between
+        these objects. Both objects must be of the same type (blobs, trees, or
+        commits). An abbreviated hash argument will be expanded to a full SHA1
+        hash automatically, provided the abbreviation is unique.</p>
+    <p class="Pp">The options for <code class="Cm">got diff</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#C_2"><code class="Fl" id="C_2">-C</code></a>
+        <var class="Ar">number</var></dt>
+      <dd>Set the number of context lines shown in the diff. By default, 3 lines
+          of context are shown.</dd>
+      <dt><a class="permalink" href="#r_3"><code class="Fl" id="r_3">-r</code></a>
+        <var class="Ar">repository-path</var></dt>
+      <dd>Use the repository at the specified path. If not specified, assume the
+          repository is located at or above the current working directory. If
+          this directory is a <code class="Nm">got</code> work tree, use the
+          repository path associated with this work tree.</dd>
+      <dt><a class="permalink" href="#s"><code class="Fl" id="s">-s</code></a></dt>
+      <dd>Show changes staged with <code class="Cm">got stage</code> instead of
+          showing local changes. This option is only valid when
+          <code class="Cm">got diff</code> is invoked in a work tree.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#di"><code class="Cm" id="di">di</code></a></dt>
+  <dd>Short alias for <code class="Cm">diff</code>.</dd>
+  <dt><a class="permalink" href="#blame"><code class="Cm" id="blame">blame</code></a>
+    [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+    [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+    <var class="Ar">path</var></dt>
+  <dd>Display line-by-line history of a file at the specified path.
+    <p class="Pp">The options for <code class="Cm">got blame</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#c_4"><code class="Fl" id="c_4">-c</code></a>
+        <var class="Ar">commit</var></dt>
+      <dd>Start traversing history at the specified
+          <var class="Ar">commit</var>. The expected argument is a commit ID
+          SHA1 hash or an existing reference which will be resolved to a commit
+          ID. An abbreviated hash argument will be expanded to a full SHA1 hash
+          automatically, provided the abbreviation is unique.</dd>
+      <dt><a class="permalink" href="#r_4"><code class="Fl" id="r_4">-r</code></a>
+        <var class="Ar">repository-path</var></dt>
+      <dd>Use the repository at the specified path. If not specified, assume the
+          repository is located at or above the current working directory. If
+          this directory is a <code class="Nm">got</code> work tree, use the
+          repository path associated with this work tree.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#bl"><code class="Cm" id="bl">bl</code></a></dt>
+  <dd>Short alias for <code class="Cm">blame</code>.</dd>
+  <dt><a class="permalink" href="#tree"><code class="Cm" id="tree">tree</code></a>
+    [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+    [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+    [<code class="Fl">-i</code>] [<code class="Fl">-R]</code>
+    [<var class="Ar">path</var>]</dt>
+  <dd>Display a listing of files and directories at the specified directory path
+      in the repository. Entries shown in this listing may carry one of the
+      following trailing annotations:
+    <table class="Bl-column">
+      <tr>
+        <td>/</td>
+        <td>entry is a directory</td>
+      </tr>
+      <tr>
+        <td>*</td>
+        <td>entry is an executable file</td>
+      </tr>
+    </table>
+    <p class="Pp">If no <var class="Ar">path</var> is specified, list the
+        repository path corresponding to the current directory of the work tree,
+        or the root directory of the repository if there is no work tree.</p>
+    <p class="Pp">The options for <code class="Cm">got tree</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#c_5"><code class="Fl" id="c_5">-c</code></a>
+        <var class="Ar">commit</var></dt>
+      <dd>List files and directories as they appear in the specified
+          <var class="Ar">commit</var>. The expected argument is a commit ID
+          SHA1 hash or an existing reference which will be resolved to a commit
+          ID. An abbreviated hash argument will be expanded to a full SHA1 hash
+          automatically, provided the abbreviation is unique.</dd>
+      <dt><a class="permalink" href="#r_5"><code class="Fl" id="r_5">-r</code></a>
+        <var class="Ar">repository-path</var></dt>
+      <dd>Use the repository at the specified path. If not specified, assume the
+          repository is located at or above the current working directory. If
+          this directory is a <code class="Nm">got</code> work tree, use the
+          repository path associated with this work tree.</dd>
+      <dt><a class="permalink" href="#i"><code class="Fl" id="i">-i</code></a></dt>
+      <dd>Show object IDs of files (blob objects) and directories (tree
+          objects).</dd>
+      <dt><a class="permalink" href="#R"><code class="Fl" id="R">-R</code></a></dt>
+      <dd>Recurse into sub-directories in the repository.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#tr"><code class="Cm" id="tr">tr</code></a></dt>
+  <dd>Short alias for <code class="Cm">tree</code>.</dd>
+  <dt><a class="permalink" href="#ref"><code class="Cm" id="ref">ref</code></a>
+    [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+    [<code class="Fl">-l</code>] [<code class="Fl">-d</code>
+    <var class="Ar">name</var>] [<var class="Ar">name</var>
+    <var class="Ar">target</var>]</dt>
+  <dd>Manage references in a repository.
+    <p class="Pp">If no options are passed, expect two arguments and attempt to
+        create, or update, the reference with the given
+        <var class="Ar">name</var>, and make it point at the given
+        <var class="Ar">target</var>. The target may be an object ID SHA1 hash
+        or an existing reference which will be resolved to an object ID. An
+        abbreviated hash argument will be expanded to a full SHA1 hash
+        automatically, provided the abbreviation is unique.</p>
+    <p class="Pp">The options for <code class="Cm">got ref</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#r_6"><code class="Fl" id="r_6">-r</code></a>
+        <var class="Ar">repository-path</var></dt>
+      <dd>Use the repository at the specified path. If not specified, assume the
+          repository is located at or above the current working directory. If
+          this directory is a <code class="Nm">got</code> work tree, use the
+          repository path associated with this work tree.</dd>
+      <dt><a class="permalink" href="#l_2"><code class="Fl" id="l_2">-l</code></a></dt>
+      <dd>List all existing references in the repository.</dd>
+      <dt><a class="permalink" href="#d"><code class="Fl" id="d">-d</code></a>
+        <var class="Ar">name</var></dt>
+      <dd>Delete the reference with the specified name from the repository.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#branch"><code class="Cm" id="branch">branch</code></a>
+    [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+    [<code class="Fl">-l</code>] [<code class="Fl">-d</code>
+    <var class="Ar">name</var>] [<var class="Ar">name</var>
+    [<var class="Ar">base-branch</var>]]</dt>
+  <dd>Manage branches in a repository.
+    <p class="Pp">Branches are managed via references which live in the
+        &#x201C;refs/heads/&#x201D; reference namespace. The
+        <code class="Cm">got branch</code> command operates on references in
+        this namespace only.</p>
+    <p class="Pp">If no options are passed, expect one or two arguments and
+        attempt to create a branch with the given <var class="Ar">name</var>,
+        and make it point at the given <var class="Ar">base-branch</var>. If no
+        <var class="Ar">base-branch</var> is specified, default to the work
+        tree's current branch if invoked in a work tree, or to the repository's
+        HEAD reference.</p>
+    <p class="Pp">The options for <code class="Cm">got branch</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#r_7"><code class="Fl" id="r_7">-r</code></a>
+        <var class="Ar">repository-path</var></dt>
+      <dd>Use the repository at the specified path. If not specified, assume the
+          repository is located at or above the current working directory. If
+          this directory is a <code class="Nm">got</code> work tree, use the
+          repository path associated with this work tree.</dd>
+      <dt><a class="permalink" href="#l_3"><code class="Fl" id="l_3">-l</code></a></dt>
+      <dd>List all existing branches in the repository. If invoked in a work
+          tree, the work tree's current branch is shown with one the following
+          annotations:
+        <table class="Bl-column">
+          <tr>
+            <td>*</td>
+            <td>work tree's base commit matches the branch tip</td>
+          </tr>
+          <tr>
+            <td>~</td>
+            <td>work tree's base commit is out-of-date</td>
+          </tr>
+        </table>
+      </dd>
+      <dt><a class="permalink" href="#d_2"><code class="Fl" id="d_2">-d</code></a>
+        <var class="Ar">name</var></dt>
+      <dd>Delete the branch with the specified name from the repository. Only
+          the branch reference is deleted. Any commit, tree, and blob objects
+          belonging to the branch remain in the repository and may be removed
+          separately with Git's garbage collector.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#br"><code class="Cm" id="br">br</code></a></dt>
+  <dd>Short alias for <code class="Cm">branch</code>.</dd>
+  <dt><a class="permalink" href="#add"><code class="Cm" id="add">add</code></a>
+    <var class="Ar">file-path ...</var></dt>
+  <dd>Schedule unversioned files in a work tree for addition to the repository
+      in the next commit.</dd>
+  <dt><a class="permalink" href="#remove"><code class="Cm" id="remove">remove</code></a>
+    <var class="Ar">file-path ...</var></dt>
+  <dd>Remove versioned files from a work tree and schedule them for deletion
+      from the repository in the next commit.
+    <p class="Pp">The options for <code class="Cm">got remove</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#f_2"><code class="Fl" id="f_2">-f</code></a></dt>
+      <dd>Perform the operation even if a file contains uncommitted
+          modifications.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#rm"><code class="Cm" id="rm">rm</code></a></dt>
+  <dd>Short alias for <code class="Cm">remove</code>.</dd>
+  <dt><a class="permalink" href="#revert"><code class="Cm" id="revert">revert</code></a>
+    <var class="Ar">file-path ...</var></dt>
+  <dd>Revert any uncommited changes in files at the specified paths. File
+      contents will be overwritten with those contained in the work tree's base
+      commit. There is no way to bring discarded changes back after
+      <code class="Cm">got revert</code>!
+    <p class="Pp">If a file was added with <code class="Cm">got add</code> it
+        will become an unversioned file again. If a file was deleted with
+        <code class="Cm">got remove</code> it will be restored.</p>
+  </dd>
+  <dt><a class="permalink" href="#rv"><code class="Cm" id="rv">rv</code></a></dt>
+  <dd>Short alias for <code class="Cm">revert</code>.</dd>
+  <dt><a class="permalink" href="#commit"><code class="Cm" id="commit">commit</code></a>
+    [<code class="Fl">-m</code> <var class="Ar">message</var>]
+    [<var class="Ar">path ...</var>]</dt>
+  <dd>Create a new commit in the repository from changes in a work tree and use
+      this commit as the new base commit for the work tree. If no
+      <var class="Ar">path</var> is specified, commit all changes in the work
+      tree. Otherwise, commit changes at or within the specified paths.
+    <p class="Pp">If changes have been explicitly staged for commit with
+        <code class="Cm">got stage,</code> only commit staged changes and reject
+        any specified paths which have not been staged.</p>
+    <p class="Pp">Show the status of each affected file, using the following
+        status codes:</p>
+    <table class="Bl-column">
+      <tr>
+        <td>M</td>
+        <td>modified file</td>
+      </tr>
+      <tr>
+        <td>D</td>
+        <td>file was deleted</td>
+      </tr>
+      <tr>
+        <td>A</td>
+        <td>new file was added</td>
+      </tr>
+    </table>
+    <p class="Pp">Files without local changes will retain their previously
+        recorded base commit. Some <code class="Nm">got</code> commands may
+        refuse to run while the work tree contains files from multiple base
+        commits. The base commit of such a work tree can be made consistent by
+        running <code class="Cm">got update</code> across the entire work
+      tree.</p>
+    <p class="Pp">The <code class="Cm">got commit</code> command requires the
+        <code class="Ev">GOT_AUTHOR</code> environment variable to be set.</p>
+    <p class="Pp">The options for <code class="Cm">got commit</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#m_2"><code class="Fl" id="m_2">-m</code></a>
+        <var class="Ar">message</var></dt>
+      <dd>Use the specified log message when creating the new commit. Without
+          the <code class="Fl">-m</code> option, <code class="Cm">got
+          commit</code> opens a temporary file in an editor where a log message
+          can be written.</dd>
+    </dl>
+    <p class="Pp"><code class="Cm">got commit</code> will refuse to run if
+        certain preconditions are not met. If the work tree's current branch is
+        not in the &#x201C;refs/heads/&#x201D; reference namespace, new commits
+        may not be created on this branch. Local changes may only be committed
+        if they are based on file content found in the most recent commit on the
+        work tree's branch. If a path is found to be out of date,
+        <code class="Cm">got update</code> must be used first in order to merge
+        local changes with changes made in the repository.</p>
+  </dd>
+  <dt><a class="permalink" href="#ci"><code class="Cm" id="ci">ci</code></a></dt>
+  <dd>Short alias for <code class="Cm">commit</code>.</dd>
+  <dt><a class="permalink" href="#cherrypick"><code class="Cm" id="cherrypick">cherrypick</code></a>
+    <var class="Ar">commit</var></dt>
+  <dd>Merge changes from a single <var class="Ar">commit</var> into the work
+      tree. The specified <var class="Ar">commit</var> must be on a different
+      branch than the work tree's base commit. The expected argument is a
+      reference or a commit ID SHA1 hash. An abbreviated hash argument will be
+      expanded to a full SHA1 hash automatically, provided the abbreviation is
+      unique.
+    <p class="Pp">Show the status of each affected file, using the following
+        status codes:</p>
+    <table class="Bl-column">
+      <tr>
+        <td>G</td>
+        <td>file was merged</td>
+      </tr>
+      <tr>
+        <td>C</td>
+        <td>file was merged and conflicts occurred during merge</td>
+      </tr>
+      <tr>
+        <td>!</td>
+        <td>changes destined for a missing file were not merged</td>
+      </tr>
+      <tr>
+        <td>D</td>
+        <td>file was deleted</td>
+      </tr>
+      <tr>
+        <td>d</td>
+        <td>file's deletion was obstructed by local modifications</td>
+      </tr>
+      <tr>
+        <td>A</td>
+        <td>new file was added</td>
+      </tr>
+      <tr>
+        <td>~</td>
+        <td>changes destined for a non-regular file were not merged</td>
+      </tr>
+    </table>
+    <p class="Pp">The merged changes will appear as local changes in the work
+        tree, which may be viewed with <code class="Cm">got diff</code>, amended
+        manually or with further <code class="Cm">got cherrypick</code> comands,
+        committed with <code class="Cm">got commit</code>, or discarded again
+        with <code class="Cm">got revert</code>.</p>
+    <p class="Pp"><code class="Cm">got cherrypick</code> will refuse to run if
+        certain preconditions are not met. If the work tree contains multiple
+        base commits it must first be updated to a single base commit with
+        <code class="Cm">got update</code>. If the work tree already contains
+        files with merge conflicts, these conflicts must be resolved first.</p>
+  </dd>
+  <dt><a class="permalink" href="#cy"><code class="Cm" id="cy">cy</code></a></dt>
+  <dd>Short alias for <code class="Cm">cherrypick</code>.</dd>
+  <dt><a class="permalink" href="#backout"><code class="Cm" id="backout">backout</code></a>
+    <var class="Ar">commit</var></dt>
+  <dd>Reverse-merge changes from a single <var class="Ar">commit</var> into the
+      work tree. The specified <var class="Ar">commit</var> must be on the same
+      branch as the work tree's base commit. The expected argument is a
+      reference or a commit ID SHA1 hash. An abbreviated hash argument will be
+      expanded to a full SHA1 hash automatically, provided the abbreviation is
+      unique.
+    <p class="Pp">Show the status of each affected file, using the following
+        status codes:</p>
+    <table class="Bl-column">
+      <tr>
+        <td>G</td>
+        <td>file was merged</td>
+      </tr>
+      <tr>
+        <td>C</td>
+        <td>file was merged and conflicts occurred during merge</td>
+      </tr>
+      <tr>
+        <td>!</td>
+        <td>changes destined for a missing file were not merged</td>
+      </tr>
+      <tr>
+        <td>D</td>
+        <td>file was deleted</td>
+      </tr>
+      <tr>
+        <td>d</td>
+        <td>file's deletion was obstructed by local modifications</td>
+      </tr>
+      <tr>
+        <td>A</td>
+        <td>new file was added</td>
+      </tr>
+      <tr>
+        <td>~</td>
+        <td>changes destined for a non-regular file were not merged</td>
+      </tr>
+    </table>
+    <p class="Pp">The reverse-merged changes will appear as local changes in the
+        work tree, which may be viewed with <code class="Cm">got diff</code>,
+        amended manually or with further <code class="Cm">got backout</code>
+        comands, committed with <code class="Cm">got commit</code>, or discarded
+        again with <code class="Cm">got revert</code>.</p>
+    <p class="Pp"><code class="Cm">got backout</code> will refuse to run if
+        certain preconditions are not met. If the work tree contains multiple
+        base commits it must first be updated to a single base commit with
+        <code class="Cm">got update</code>. If the work tree already contains
+        files with merge conflicts, these conflicts must be resolved first.</p>
+  </dd>
+  <dt><a class="permalink" href="#bo"><code class="Cm" id="bo">bo</code></a></dt>
+  <dd>Short alias for <code class="Cm">backout</code>.</dd>
+  <dt><a class="permalink" href="#rebase"><code class="Cm" id="rebase">rebase</code></a>
+    [<code class="Fl">-a</code>] [<code class="Fl">-c]</code>
+    [<var class="Ar">branch</var>]</dt>
+  <dd>Rebase commits on the specified <var class="Ar">branch</var> onto the tip
+      of the current branch of the work tree. The <var class="Ar">branch</var>
+      must share common ancestry with the work tree's current branch. Rebasing
+      begins with the first descendent commit of the youngest common ancestor
+      commit shared by the specified <var class="Ar">branch</var> and the work
+      tree's current branch, and stops once the tip commit of the specified
+      <var class="Ar">branch</var> has been rebased.
+    <p class="Pp">Rebased commits are accumulated on a temporary branch which
+        the work tree will remain switched to throughout the entire rebase
+        operation. Commits on this branch represent the same changes with the
+        same log messages as their counterparts on the original
+        <var class="Ar">branch</var>, but with different commit IDs. Once
+        rebasing has completed successfully, the temporary branch becomes the
+        new version of the specified <var class="Ar">branch</var> and the work
+        tree is automatically switched to it.</p>
+    <p class="Pp">While rebasing commits, show the status of each affected file,
+        using the following status codes:</p>
+    <table class="Bl-column">
+      <tr>
+        <td>G</td>
+        <td>file was merged</td>
+      </tr>
+      <tr>
+        <td>C</td>
+        <td>file was merged and conflicts occurred during merge</td>
+      </tr>
+      <tr>
+        <td>!</td>
+        <td>changes destined for a missing file were not merged</td>
+      </tr>
+      <tr>
+        <td>D</td>
+        <td>file was deleted</td>
+      </tr>
+      <tr>
+        <td>d</td>
+        <td>file's deletion was obstructed by local modifications</td>
+      </tr>
+      <tr>
+        <td>A</td>
+        <td>new file was added</td>
+      </tr>
+      <tr>
+        <td>~</td>
+        <td>changes destined for a non-regular file were not merged</td>
+      </tr>
+    </table>
+    <p class="Pp">If merge conflicts occur the rebase operation is interrupted
+        and may be continued once conflicts have been resolved. Alternatively,
+        the rebase operation may be aborted which will leave
+        <var class="Ar">branch</var> unmodified and the work tree switched back
+        to its original branch.</p>
+    <p class="Pp">If a merge conflict is resolved in a way which renders the
+        merged change into a no-op change, the corresponding commit will be
+        elided when the rebase operation continues.</p>
+    <p class="Pp"><code class="Cm">got rebase</code> will refuse to run if
+        certain preconditions are not met. If the work tree contains multiple
+        base commits it must first be updated to a single base commit with
+        <code class="Cm">got update</code>. If changes have been staged with
+        <code class="Cm">got stage</code>, these changes must first be comitted
+        with <code class="Cm">got commit</code> or unstaged with
+        <code class="Cm">got unstage</code>. If the work tree contains local
+        changes, these changes must first be committed with <code class="Cm">got
+        commit</code> or reverted with <code class="Cm">got revert</code>. If
+        the <var class="Ar">branch</var> contains changes to files outside of
+        the work tree's path prefix, the work tree cannot be used to rebase this
+        branch.</p>
+    <p class="Pp">The <code class="Cm">got update</code> and
+        <code class="Cm">got commit</code> commands will refuse to run while a
+        rebase operation is in progress. Other commands which manipulate the
+        work tree may be used for conflict resolution purposes.</p>
+    <p class="Pp">The options for <code class="Cm">got rebase</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#a"><code class="Fl" id="a">-a</code></a></dt>
+      <dd>Abort an interrupted rebase operation. If this option is used, no
+          further command-line arguments are allowed.</dd>
+      <dt><a class="permalink" href="#c_6"><code class="Fl" id="c_6">-c</code></a></dt>
+      <dd>Continue an interrupted rebase operation. If this option is used, no
+          further command-line arguments are allowed.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#rb"><code class="Cm" id="rb">rb</code></a></dt>
+  <dd>Short alias for <code class="Cm">rebase</code>.</dd>
+  <dt><a class="permalink" href="#histedit"><code class="Cm" id="histedit">histedit</code></a>
+    [<code class="Fl">-a</code>] [<code class="Fl">-c]</code>
+    [<code class="Fl">-F</code> <var class="Ar">histedit-script</var>]</dt>
+  <dd>Edit commit history between the work tree's current base commit and the
+      tip commit of the work tree's current branch.
+    <p class="Pp">Editing of commit history is controlled via a
+        <var class="Ar">histedit script</var> which can be edited interactively
+        or passed on the command line. The format of the histedit script is
+        line-based. Each line in the script begins with a command name, followed
+        by whitespace and an argument. For most commands, the expected argument
+        is a commit ID SHA1 hash. Any remaining text on the line is ignored.
+        Lines which begin with the &#x2018;#&#x2019; character are ignored
+        entirely.</p>
+    <p class="Pp">The available commands are as follows:</p>
+    <table class="Bl-column">
+      <tr>
+        <td>pick <var class="Ar">commit</var></td>
+        <td>Use the specified commit as it is.</td>
+      </tr>
+      <tr>
+        <td>edit <var class="Ar">commit</var></td>
+        <td>Use the specified commit but once changes have been merged into the
+          work tree interrupt the histedit operation for amending.</td>
+      </tr>
+      <tr>
+        <td>fold <var class="Ar">commit</var></td>
+        <td>Combine the specified commit with the next commit listed further
+          below that will be used.</td>
+      </tr>
+      <tr>
+        <td>drop <var class="Ar">commit</var></td>
+        <td>Remove this commit from the edited history.</td>
+      </tr>
+      <tr>
+        <td>mesg <var class="Ar">log-message</var></td>
+        <td>Use the specified single-line log message for the commit on the
+          previous line. If the log message argument is left empty, open an
+          editor where a new log message can be written.</td>
+      </tr>
+    </table>
+    <p class="Pp">Every commit in the history being edited must be mentioned in
+        the script. Lines may be re-ordered to change the order of commits in
+        the edited history.</p>
+    <p class="Pp">Edited commits are accumulated on a temporary branch which the
+        work tree will remain switched to throughout the entire histedit
+        operation. Once history editing has completed successfully, the
+        temporary branch becomes the new version of the work tree's branch and
+        the work tree is automatically switched to it.</p>
+    <p class="Pp">While merging commits, show the status of each affected file,
+        using the following status codes:</p>
+    <table class="Bl-column">
+      <tr>
+        <td>G</td>
+        <td>file was merged</td>
+      </tr>
+      <tr>
+        <td>C</td>
+        <td>file was merged and conflicts occurred during merge</td>
+      </tr>
+      <tr>
+        <td>!</td>
+        <td>changes destined for a missing file were not merged</td>
+      </tr>
+      <tr>
+        <td>D</td>
+        <td>file was deleted</td>
+      </tr>
+      <tr>
+        <td>d</td>
+        <td>file's deletion was obstructed by local modifications</td>
+      </tr>
+      <tr>
+        <td>A</td>
+        <td>new file was added</td>
+      </tr>
+      <tr>
+        <td>~</td>
+        <td>changes destined for a non-regular file were not merged</td>
+      </tr>
+    </table>
+    <p class="Pp">If merge conflicts occur the histedit operation is interrupted
+        and may be continued once conflicts have been resolved. Alternatively,
+        the histedit operation may be aborted which will leave the work tree
+        switched back to its original branch.</p>
+    <p class="Pp">If a merge conflict is resolved in a way which renders the
+        merged change into a no-op change, the corresponding commit will be
+        elided when the histedit operation continues.</p>
+    <p class="Pp"><code class="Cm">got histedit</code> will refuse to run if
+        certain preconditions are not met. If the work tree's current branch is
+        not in the &#x201C;refs/heads/&#x201D; reference namespace, the history
+        of the branch may not be edited. If the work tree contains multiple base
+        commits it must first be updated to a single base commit with
+        <code class="Cm">got update</code>. If changes have been staged with
+        <code class="Cm">got stage</code>, these changes must first be comitted
+        with <code class="Cm">got commit</code> or unstaged with
+        <code class="Cm">got unstage</code>. If the work tree contains local
+        changes, these changes must first be committed with <code class="Cm">got
+        commit</code> or reverted with <code class="Cm">got revert</code>. If
+        the edited history contains changes to files outside of the work tree's
+        path prefix, the work tree cannot be used to edit the history of this
+        branch.</p>
+    <p class="Pp">The <code class="Cm">got update</code> command will refuse to
+        run while a histedit operation is in progress. Other commands which
+        manipulate the work tree may be used, and the <code class="Cm">got
+        commit</code> command may be used to commit arbitrary changes to the
+        temporary branch while the histedit operation is interrupted.</p>
+    <p class="Pp">The options for <code class="Cm">got histedit</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#a_2"><code class="Fl" id="a_2">-a</code></a></dt>
+      <dd>Abort an interrupted histedit operation. If this option is used, no
+          further command-line arguments are allowed.</dd>
+      <dt><a class="permalink" href="#c_7"><code class="Fl" id="c_7">-c</code></a></dt>
+      <dd>Continue an interrupted histedit operation. If this option is used, no
+          further command-line arguments are allowed.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#he"><code class="Cm" id="he">he</code></a></dt>
+  <dd>Short alias for <code class="Cm">histedit</code>.</dd>
+  <dt><a class="permalink" href="#stage"><code class="Cm" id="stage">stage</code></a>
+    [<code class="Fl">-l</code>] <var class="Ar">file-path ...</var></dt>
+  <dd>Stage local changes at the specified paths for inclusion in the next
+      commit. Paths may be staged if they are added, modified, or deleted
+      according to <code class="Cm">got status</code>.
+    <p class="Pp">Staged changes affect the behaviour of <code class="Cm">got
+        commit</code>, <code class="Cm">got status</code>, and
+        <code class="Cm">got diff</code>. While paths with staged changes exist,
+        the <code class="Cm">got commit</code> command will refuse to commit any
+        paths which do not have staged changes. Local changes created on top of
+        staged changes can only be committed if the path is staged again, or if
+        the staged changes are committed first. The <code class="Cm">got
+        status</code> command will show both local changes and staged changes.
+        The <code class="Cm">got diff</code> command is able to display local
+        changes relative to staged changes, and to display staged changes
+        relative to the repository. The <code class="Cm">got revert</code>
+        command cannot revert staged changes but may be used to revert local
+        changes relative to staged changes.</p>
+    <p class="Pp">The options for <code class="Cm">got stage</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#l_4"><code class="Fl" id="l_4">-l</code></a></dt>
+      <dd>Instead of staging new changes, list paths which are already staged,
+          along with the IDs of corresponding blob objects. Indicate staged
+          status using the following status codes:
+        <table class="Bl-column">
+          <tr>
+            <td>A</td>
+            <td>file addition is staged</td>
+          </tr>
+          <tr>
+            <td>M</td>
+            <td>file modification is staged</td>
+          </tr>
+          <tr>
+            <td>D</td>
+            <td>file deletion is staged</td>
+          </tr>
+        </table>
+      </dd>
+    </dl>
+    <p class="Pp"><code class="Cm">got stage</code> will refuse to run if
+        certain preconditions are not met. If a file contains merge conflicts,
+        these conflicts must be resolved first. If a file is found to be out of
+        date relative to the head commit on the work tree's current branch, the
+        file must be updated with <code class="Cm">got update</code> before it
+        can be staged (however, this does not prevent the file from becoming
+        out-of-date at some point after having been staged).</p>
+    <p class="Pp">The <code class="Cm">got update</code>, <code class="Cm">got
+        rebase</code>, and <code class="Cm">got histedit</code> commands will
+        refuse to run while staged changes exist. If staged changes cannot be
+        committed because a staged path is out of date, the path must be
+        unstaged with <code class="Cm">got unstage</code> before it can be
+        updated with <code class="Cm">got update</code>, and may then be staged
+        again if necessary.</p>
+  </dd>
+  <dt><a class="permalink" href="#sg"><code class="Cm" id="sg">sg</code></a></dt>
+  <dd>Short alias for <code class="Cm">stage</code>.</dd>
+  <dt><a class="permalink" href="#unstage"><code class="Cm" id="unstage">unstage</code></a>
+    [<var class="Ar">path ...</var>]</dt>
+  <dd>Merge staged changes back into the work tree and put affected paths back
+      into non-staged status. If no <var class="Ar">path</var> is specified,
+      unstage all staged changes across the entire work tree.
+    <p class="Pp">Show the status of each affected file, using the following
+        status codes:</p>
+    <table class="Bl-column">
+      <tr>
+        <td>G</td>
+        <td>file was unstaged</td>
+      </tr>
+      <tr>
+        <td>C</td>
+        <td>file was unstaged and conflicts occurred during merge</td>
+      </tr>
+      <tr>
+        <td>!</td>
+        <td>changes destined for a missing file were not merged</td>
+      </tr>
+      <tr>
+        <td>D</td>
+        <td>file was staged as deleted and still is deleted</td>
+      </tr>
+      <tr>
+        <td>d</td>
+        <td>file's deletion was obstructed by local modifications</td>
+      </tr>
+      <tr>
+        <td>~</td>
+        <td>changes destined for a non-regular file were not merged</td>
+      </tr>
+    </table>
+  </dd>
+  <dt><a class="permalink" href="#ug"><code class="Cm" id="ug">ug</code></a></dt>
+  <dd>Short alias for <code class="Cm">unstage</code>.</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="ENVIRONMENT"><a class="permalink" href="#ENVIRONMENT">ENVIRONMENT</a></h1>
+<dl class="Bl-tag">
+  <dt><a class="permalink" href="#GOT_AUTHOR"><code class="Ev" id="GOT_AUTHOR">GOT_AUTHOR</code></a></dt>
+  <dd>The author's name and email address for <code class="Cm">got commit</code>
+      and <code class="Cm">got import</code>, for example:
+      <span class="An">Stefan Sperling</span>
+      &lt;<a class="Mt" href="mailto:stsp@openbsd.org">stsp@openbsd.org</a>&gt;</dd>
+  <dt><a class="permalink" href="#VISUAL,"><code class="Ev" id="VISUAL,">VISUAL,</code></a>
+    <code class="Ev">EDITOR</code></dt>
+  <dd>The editor spawned by <code class="Cm">got commit</code>.</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="EXIT_STATUS"><a class="permalink" href="#EXIT_STATUS">EXIT
+  STATUS</a></h1>
+The <code class="Nm">got</code> utility exits&#x00A0;0 on success,
+  and&#x00A0;&gt;0 if an error occurs.
+</section>
+<section class="Sh">
+<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
+Clone an existing Git repository for use with <code class="Nm">got</code>. This
+  step currently requires <a class="Xr">git(1)</a>:
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ cd /var/git/</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ git clone --bare
+  https://github.com/openbsd/src.git</code></div>
+<p class="Pp">Alternatively, for quick and dirty local testing of
+    <code class="Nm">got</code> a new Git repository could be created and
+    populated with files, e.g. from a temporary CVS checkout located at
+    <span class="Pa">/tmp/src</span>:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got init
+  /var/git/src.git</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got import -r /var/git/src.git -I
+  CVS -I obj /tmp/src</code></div>
+<p class="Pp">Check out a work tree from the Git repository to /usr/src:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got checkout /var/git/src.git
+  /usr/src</code></div>
+<p class="Pp">View local changes in a work tree directory:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got status</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got diff | less</code></div>
+<p class="Pp">In a work tree or a git repository directory, list all branch
+    references:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got branch -l</code></div>
+<p class="Pp">In a work tree or a git repository directory, create a new branch
+    called &#x201C;unified-buffer-cache&#x201D; which is forked off the
+    &#x201C;master&#x201D; branch:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got branch unified-buffer-cache
+  master</code></div>
+<p class="Pp">Switch an existing work tree to the branch
+    &#x201C;unified-buffer-cache&#x201D;. Local changes in the work tree will be
+    preserved and merged if necessary:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got update -b
+  unified-buffer-cache</code></div>
+<p class="Pp">Create a new commit from local changes in a work tree directory.
+    This new commit will become the head commit of the work tree's current
+    branch:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got commit</code></div>
+<p class="Pp">In a work tree or a git repository directory, view changes
+    committed in the 3 most recent commits to the work tree's branch, or the
+    branch resolved via the repository's HEAD reference, respectively:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got log -p -l 3 -f</code></div>
+<p class="Pp">Add new files and remove obsolete files in a work tree
+  directory:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got add
+  sys/uvm/uvm_ubc.c</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got remove
+  sys/uvm/uvm_vnode.c</code></div>
+<p class="Pp">Create a new commit from local changes in a work tree directory
+    with a pre-defined log message.</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got commit -m 'unify the buffer
+  cache'</code></div>
+<p class="Pp">Update any work tree checked out from the
+    &#x201C;unified-buffer-cache&#x201D; branch to the latest commit on this
+    branch:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got update</code></div>
+<p class="Pp">Roll file content on the unified-buffer-cache branch back by one
+    commit, and then fetch the rolled-back change into the work tree as a local
+    change to be amended and perhaps committed again:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got backout
+  unified-buffer-cache</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got commit -m 'roll back
+  previous'</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ # now back out the previous backout
+  :-)</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got backout
+  unified-buffer-cache</code></div>
+<p class="Pp">Fetch new upstream commits into the local repository's master
+    branch. This step currently requires <a class="Xr">git(1)</a>:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ cd /var/git/src.git</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ git fetch origin
+  master:master</code></div>
+<p class="Pp">Rebase the &#x201C;unified-buffer-cache&#x201D; branch on top of
+    the new head commit of the &#x201C;master&#x201D; branch.</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got update -b master</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got rebase
+  unified-buffer-cache</code></div>
+<p class="Pp">Create a patch from all changes on the unified-buffer-cache
+    branch. The patch can be mailed out for review and applied to OpenBSD's CVS
+    tree:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got diff master
+  unified-buffer-cache &gt; /tmp/ubc.diff</code></div>
+<p class="Pp">Edit the entire commit history of the
+    &#x201C;unified-buffer-cache&#x201D; branch:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got update -b
+  unified-buffer-cache</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got update -c master</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got histedit</code></div>
+<p class="Pp">Additional steps are necessary if local changes need to be pushed
+    back to the remote repository, which currently requires <code class="Cm">git
+    fetch</code> and <code class="Cm">git push</code>. Before working against
+    existing branches in a repository cloned with &#x201C;git clone
+    --bare&#x201D;, a Git &#x201C;refspec&#x201D; must be configured to map all
+    references in the remote repository into the &#x201C;refs/remotes&#x201D;
+    namespace of the local repository. This can achieved by setting Git's
+    <span class="Pa">remote.origin.fetch</span> configuration variable to the
+    value &#x201C;+refs/heads/*:refs/remotes/origin/*&#x201D; with the
+    <code class="Cm">git config</code> command:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ cd /var/git/repo</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ git config remote.origin.fetch
+  '+refs/heads/*:refs/remotes/origin/*'</code></div>
+<p class="Pp">Alternatively, the following <span class="Pa">fetch</span>
+    configuration item can be added manually to the Git repository's
+    <span class="Pa">config</span> file:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">[remote origin]</code></div>
+<div class="Bd Bd-indent"><code class="Li">url = ...</code></div>
+<div class="Bd Bd-indent"><code class="Li">fetch =
+  +refs/heads/*:refs/remotes/origin/*</code></div>
+<p class="Pp">This configuration leaves the local repository's
+    &#x201C;refs/heads&#x201D; namespace free for use by local branches checked
+    out with <code class="Cm">got checkout</code> and, if needed, created with
+    <code class="Cm">got branch</code>.</p>
+<p class="Pp">Branches in the &#x201C;remotes/origin&#x201D; namespace can be
+    updated with incoming changes from the remote repository with
+    <code class="Cm">git fetch</code>:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ cd /var/git/repo</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ git fetch</code></div>
+<p class="Pp">Before outgoing changes on the local &#x201C;master&#x201D; branch
+    can be pushed to the remote repository, the local &#x201C;master&#x201D;
+    branch must be rebased onto the &#x201C;origin/master&#x201D; branch:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got update -b
+  origin/master</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got rebase master</code></div>
+<p class="Pp">Changes on the local &#x201C;master&#x201D; branch can then be
+    pushed to the remote repository with <code class="Cm">git push</code>:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ cd /var/git/repo</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ git push origin master</code></div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+  ALSO</a></h1>
+<a class="Xr">tog(1)</a>, <a class="Xr">git-repository(5)</a>,
+  <a class="Xr">got-worktree(5)</a>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
+<span class="An">Stefan Sperling</span>
+  &lt;<a class="Mt" href="mailto:stsp@openbsd.org">stsp@openbsd.org</a>&gt;
+<br/>
+<span class="An">Martin Pieuchot</span>
+  &lt;<a class="Mt" href="mailto:mpi@openbsd.org">mpi@openbsd.org</a>&gt;
+<br/>
+<span class="An">joshua stein</span>
+  &lt;<a class="Mt" href="mailto:jcs@openbsd.org">jcs@openbsd.org</a>&gt;
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CAVEATS"><a class="permalink" href="#CAVEATS">CAVEATS</a></h1>
+<code class="Nm">got</code> is a work-in-progress and many commands remain to be
+  implemented. At present, the user has to fall back on <a class="Xr">git(1)</a>
+  to perform many tasks, in particular tasks related to repository
+  administration and tasks which require a network connection.
+</section>
+</div>
+<table class="foot">
+  <tr>
+    <td class="foot-date">August 4, 2019</td>
+    <td class="foot-os">OpenBSD 6.5</td>
+  </tr>
+</table>
+</body>
+</html>
blob - /dev/null
blob + 97ace786464b193baf1cd51e54016aea3016e62f (mode 644)
Binary files /dev/null and got.png differ
blob - /dev/null
blob + 627271783e42d3e398372616e05d46102ff9b4fa (mode 644)
--- /dev/null
+++ index.html
@@ -0,0 +1,62 @@
+<!doctype html>
+<html lang=en>
+    <meta charset=utf-8>
+    <title>Game of Trees</title>
+    <meta name="description" content="the main Game of Trees page">
+    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+    <link rel="canonical" href="https://stsp.name/got/index.html">
+    <link rel="stylesheet" href="openbsd.css">
+
+<table id="project-main" class="not-openbsd">
+  <tr class="align-top">
+    <td>
+
+      <h1>About Got</h1>
+      <ul>
+        <li><a href="goals.html">Project Goals</a>
+      </ul>
+      <h1>Resources</h1>
+      <ul>
+        <li><a href="manual.html">Manual Pages</a>
+      </ul>
+      <h1>For OpenBSD</h1>
+      <ul>
+        <li><a href="install.html">Installation</a>
+        <li><a href="code.html">Get source code</a>
+      </ul>
+<!--
+      <h1>For other systems</h1>
+      <ul>
+        <li><a href="portable.html">FreeBSD</a>
+      </ul>
+-->
+
+    <td>
+      <h1 class="header">
+        <img src="got.png" height=243 width=400 alt="[Game of Trees]">
+      </h1>
+
+      <p id="callout">
+      Got is to be released soon.
+
+<p>
+Game of Trees (Got) is a version control system which prioritizes ease
+of use and simplicity over flexibility.
+
+<p>
+Got is being developed exclusively on
+<a href="https://www.openbsd.org">OpenBSD</a>. It is not a drop-in
+replacement for other version control systems and it does not attempt
+to compete with anything else than the use of other version control
+systems in the context of the OpenBSD project.
+Got's target audience are OpenBSD developers, and its focus is directed
+at the particular needs and use cases of the OpenBSD project.
+
+<p>
+Game of Trees is developed by <a href="https://stsp.name">Stefan Sperling</a>
+with help from other OpenBSD developers</a>.
+The software is freely usable and re-usable by everyone under
+a BSD license.
+
+
+</table>
blob - /dev/null
blob + e9984c2ddffaab9e0dc33772ad316239b3eb7de1 (mode 644)
--- /dev/null
+++ manual.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+
+<title>Game of Trees Manual Pages</title>
+<meta name="description" content="Game of Trees Manual Pages">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<link rel="stylesheet" type="text/css" href="openbsd.css">
+<link rel="canonical" href="https://stsp.name/got/manual.html">
+
+<h2>
+<a href="index.html">
+<i>Game of Trees</i></a>
+Manual Pages
+</h2>
+<hr>
+<ul>
+<li><a href="got.1.html">got</a> &mdash; command line interface
+<li><a href="tog.1.html">tog</a> &mdash; interactive repository browser
+<li><a href="got-worktree.5.html">got-worktree</a> &mdash; Got work tree format
+<li><a href="git-repository.5.html">git-repository</a> &mdash; Git repository format
+</ul>
blob - /dev/null
blob + 2b0849318b79f0d8454a3531d30f88c1da427faf (mode 644)
--- /dev/null
+++ openbsd.css
@@ -0,0 +1,320 @@
+/* $OpenBSD: openbsd.css,v 1.9 2019/06/03 02:43:03 deraadt Exp $ */
+
+:root {
+	--red:   #E00000;
+	--green: #008100;
+	--blue:  #0000E0;
+	--buildhead: #E0E0E0;
+}
+
+:link {
+	color: #23238E;
+}
+
+:visited {
+	color: #008088;
+}
+
+body {
+	background-color: #FFFFFF;
+	color: #111111;
+	margin: 15px auto;
+	padding: 0 10px;
+}
+
+code {
+	white-space: nowrap;
+}
+
+@media (min-width: 800px) {
+	body {
+		max-width: 85%;
+	}
+}
+
+tt {
+	white-space: pre;
+}
+
+.cmdbox {
+	background: #F5F5F5;
+	border: 1px solid #AAAAAA;
+	overflow: auto;
+	padding: 10px;
+}
+
+#OpenBSD {
+	color: #E00000;
+}
+
+#OpenBSD :link i, #OpenBSD :visited i {
+	color: #0000FF;
+}
+
+#OpenBSD :link b, #OpenBSD :visited b {
+	color: #000084;
+}
+
+#OpenBSD small {
+	font-weight: normal;
+	float: right;
+}
+
+/* sidebar layout */
+
+#project-main {
+	height: 100%;
+	border-collapse: collapse;
+	position: absolute;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	top: 0;
+}
+
+#project-main td {
+	padding: 4px;
+}
+
+#project-main tr td:first-child {
+	border-right: 11px solid;
+}
+
+#project-main tr td:first-child {
+	background-color: #6BBDD6;
+	border-color: #007B9C;
+}
+
+#project-main.not-openbsd tr td:first-child {
+	background-color: #6BBDD6;
+	border-color: #007B9C;
+}
+
+#project-main tr td:first-child h1 {
+	margin: 0;
+	font-size: 15pt;
+	white-space: nowrap;
+}
+
+#project-main tr td:first-child ul {
+	margin-top: 0;
+	margin-bottom: 1em;
+	padding-left: 0;
+}
+
+#project-main tr td:first-child ul li {
+	list-style-type: none;
+	list-style-position: inside;
+	margin-left: 0.5em;
+}
+
+#project-main .header {
+	margin: 0;
+	text-align: center;
+}
+
+#callout {
+	color: #E00000;
+	font-weight: bold;
+	text-align: center;
+}
+
+.not-openbsd #callout {
+	color: #0000A0;
+	font-weight: normal;
+}
+
+#project-main .align-top {
+	vertical-align: top;
+}
+
+#project-main .align-bottom {
+	vertical-align: bottom;
+}
+
+/* errataXX.html */
+
+#errata strong {
+	color: var(--green);
+}
+
+/* XX.html */
+
+#release #OpenBSD + table {
+	border-spacing: 0;
+	margin-bottom: 1.5em;
+}
+
+#release #OpenBSD + table td {
+	vertical-align: top;
+}
+
+#release #OpenBSD + table > tbody > tr > td {
+	padding-left: 1.4em;
+}
+
+#release #OpenBSD + table ul {
+	margin-left: 0;
+	padding-left: 0;
+}
+
+#release #OpenBSD + table ul li {
+	margin-left: 0;
+	padding-left: 0;
+}
+
+#release cite.isbn {
+	color: var(--red);
+	font-style: normal;
+}
+
+#release code.reldir {
+	color: var(--red);
+	font-family: serif;
+}
+
+#release table.signify {
+	font-family: monospace;
+}
+
+#release table.signify td {
+	padding: 0;
+}
+
+#release h3 {
+	color: var(--blue);
+}
+
+#release #quickinstall h3 {
+	color: var(--red);
+}
+
+#release kbd {
+	font-weight: bolder;
+}
+
+#release #new li p {
+	margin-bottom: 0;
+}
+
+#release #new li p + p {
+	margin-top: 0;
+}
+
+#release #new li + li {
+	margin-top: 1em;
+}
+
+#release #new li li + li {
+	margin-top: 0;
+}
+
+#release #new li li ul {
+	margin-bottom: 0;
+}
+
+#release #quickinstall p:first-child {
+	margin-left: 0;
+}
+
+#release #quickinstall p {
+	margin-left: 2.5em;
+}
+
+#release #quickinstall blockquote {
+	margin-left: 4.5em;
+}
+
+/* platform pages */
+
+#platform #OpenBSD + hr + table {
+	margin-bottom: 0;
+}
+#platform #OpenBSD + hr + table tr {
+	margin-left: 0;
+}
+
+#platform #OpenBSD + hr + table td {
+	vertical-align: top;
+	padding-left: 0;
+	padding-bottom: 0;
+}
+
+#platform #OpenBSD + hr + table p {
+	margin-top: 0;
+}
+
+#platform #OpenBSD + hr + table p:last-child {
+	margin-bottom: 0;
+}
+
+#platform h3 {
+	color: var(--blue);
+}
+
+/* redefine colors for dark mode */
+
+@media (prefers-color-scheme: dark) {
+	:root {
+		--red:   #E05434;
+		--green: #20B700;
+		--blue:  #A7C1E5;
+		--buildhead: #474749;
+	}
+
+	:link {
+		color: #BAD7FF;
+	}
+
+	:visited {
+		color: #F6BAFF;
+	}
+
+	body {
+		background-color: #1E1F21;
+		color: #EEEFF1;
+	}
+
+	.cmdbox {
+		background: #000000;
+		color: #FFFFFFF;
+	}
+
+	#OpenBSD :link {
+		text-decoration-color: #CF4229;
+	}
+
+	#OpenBSD :link i, #OpenBSD :visited i {
+		color: #F2CA30;
+	}
+
+	#OpenBSD :link b, #OpenBSD :visited b {
+		color: #CF4229;
+	}
+
+	#OpenBSD {
+		color: #EEEFF1;
+	}
+
+	#faq #OpenBSD small :link {
+		text-decoration-color: #BAD7FF;
+	}
+
+	#project-main tr td:first-child {
+		background-color: #202F51;
+		border-color: #97BADB;
+	}
+
+	#project-main.not-openbsd tr td:first-child {
+		background-color: #202F51;
+		border-color: #97BADB;
+	}
+
+	#callout {
+		color: #E05434;
+	}
+
+	.not-openbsd #callout {
+		color: #E05434;
+	}
+}
blob - /dev/null
blob + f5c7738b51ed6a308fbc963b2e4ebe4d85343829 (mode 644)
--- /dev/null
+++ tog.1.html
@@ -0,0 +1,341 @@
+<!DOCTYPE html>
+<html>
+<!-- This is an automatically generated file.  Do not edit.
+   Copyright (c) 2018 Stefan Sperling
+  
+   Permission to use, copy, modify, and distribute this software for any
+   purpose with or without fee is hereby granted, provided that the above
+   copyright notice and this permission notice appear in all copies.
+  
+   THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+   WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+   MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+   ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+   -->
+<head>
+  <meta charset="utf-8"/>
+  <style>
+    table.head, table.foot { width: 100%; }
+    td.head-rtitle, td.foot-os { text-align: right; }
+    td.head-vol { text-align: center; }
+    div.Pp { margin: 1ex 0ex; }
+    div.Nd, div.Bf, div.Op { display: inline; }
+    span.Pa, span.Ad { font-style: italic; }
+    span.Ms { font-weight: bold; }
+    dl.Bl-diag > dt { font-weight: bold; }
+    code.Nm, code.Fl, code.Cm, code.Ic, code.In, code.Fd, code.Fn,
+    code.Cd { font-weight: bold; font-family: inherit; }
+  </style>
+  <title>TOG(1)</title>
+</head>
+<body>
+<table class="head">
+  <tr>
+    <td class="head-ltitle">TOG(1)</td>
+    <td class="head-vol">General Commands Manual</td>
+    <td class="head-rtitle">TOG(1)</td>
+  </tr>
+</table>
+<div class="manual-text">
+<section class="Sh">
+<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
+<code class="Nm">tog</code> &#x2014;
+<div class="Nd">git repository browser</div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<table class="Nm">
+  <tr>
+    <td><code class="Nm">tog</code></td>
+    <td><var class="Ar">command</var> [<code class="Fl">-h</code>]
+      [<var class="Ar">arg ...</var>]</td>
+  </tr>
+</table>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<code class="Nm">tog</code> is an interactive read-only browser for git
+  repositories. This repository format is described in
+  <a class="Xr">git-repository(5)</a>.
+<p class="Pp"><code class="Nm">tog</code> supports several types of views which
+    display repository data:</p>
+<dl class="Bl-tag">
+  <dt>Log view</dt>
+  <dd>Displays commits in the repository's history. This view is displayed
+      initially if no <var class="Ar">command</var> is specified.</dd>
+  <dt>Diff view</dt>
+  <dd>Displays changes made in a particular commit.</dd>
+  <dt>Blame view</dt>
+  <dd>Displays the line-by-line history of a file.</dd>
+  <dt>Tree view</dt>
+  <dd>Displays the tree corresponding to a particular commit.</dd>
+</dl>
+<p class="Pp"><code class="Nm">tog</code> provides global and command-specific
+    key bindings and options. The global key bindings are:</p>
+<dl class="Bl-tag">
+  <dt><a class="permalink" href="#Q"><code class="Cm" id="Q">Q</code></a></dt>
+  <dd>Quit <code class="Nm">tog</code>.</dd>
+  <dt><a class="permalink" href="#q"><code class="Cm" id="q">q</code></a></dt>
+  <dd>Quit the view which is in focus.</dd>
+  <dt><a class="permalink" href="#Tab"><code class="Cm" id="Tab">Tab</code></a></dt>
+  <dd>Switch focus between views.</dd>
+  <dt><a class="permalink" href="#f"><code class="Cm" id="f">f</code></a></dt>
+  <dd>Toggle fullscreen mode for a split-screen view.
+      <code class="Nm">tog</code> will automatically use split-screen views if
+      the size of the terminal window is sufficiently large.</dd>
+</dl>
+<p class="Pp">Global options must precede the command name, and are as
+  follows:</p>
+<dl class="Bl-tag">
+  <dt><a class="permalink" href="#h"><code class="Fl" id="h">-h</code></a></dt>
+  <dd>Display usage information.</dd>
+  <dt><a class="permalink" href="#V"><code class="Fl" id="V">-V</code></a></dt>
+  <dd>Display program version and exit immediately.</dd>
+</dl>
+<p class="Pp">The commands for <code class="Nm">tog</code> are as follows:</p>
+<dl class="Bl-tag">
+  <dt><a class="permalink" href="#log"><code class="Cm" id="log">log</code></a>
+    [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+    [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+    [<var class="Ar">path</var>]</dt>
+  <dd>Display history of a repository. If a <var class="Ar">path</var> is
+      specified, show only commits which modified this path.
+    <p class="Pp">This command is also executed if no explicit command is
+        specified.</p>
+    <p class="Pp">The key bindings for <code class="Cm">tog log</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#Down-arrow,_j,__,_Full_stop"><code class="Cm" id="Down-arrow,_j,__,_Full_stop">Down-arrow,
+        j, &gt;, Full stop</code></a></dt>
+      <dd>Move the selection cursor down.</dd>
+      <dt><a class="permalink" href="#Up-arrow,_k,__,_Comma"><code class="Cm" id="Up-arrow,_k,__,_Comma">Up-arrow,
+        k, &lt;, Comma</code></a></dt>
+      <dd>Move the selection cursor up.</dd>
+      <dt><a class="permalink" href="#Page-down,_Ctrl+f"><code class="Cm" id="Page-down,_Ctrl+f">Page-down,
+        Ctrl+f</code></a></dt>
+      <dd>Move the selection cursor down one page.</dd>
+      <dt><a class="permalink" href="#Page-up,_Ctrl+b"><code class="Cm" id="Page-up,_Ctrl+b">Page-up,
+        Ctrl+b</code></a></dt>
+      <dd>Move the selection cursor up one page.</dd>
+      <dt><a class="permalink" href="#Enter,_Space"><code class="Cm" id="Enter,_Space">Enter,
+        Space</code></a></dt>
+      <dd>Open a <code class="Cm">diff</code> view showing file changes made in
+          the currently selected commit.</dd>
+      <dt><a class="permalink" href="#t"><code class="Cm" id="t">t</code></a></dt>
+      <dd>Open a <code class="Cm">tree</code> view showing the tree for the
+          currently selected commit.</dd>
+      <dt><a class="permalink" href="#Backspace"><code class="Cm" id="Backspace">Backspace</code></a></dt>
+      <dd>Show log entries for the parent directory of the currently selected
+          path, unless an active search is in progress in which case
+          <code class="Cm">Backspace</code> aborts the search.</dd>
+      <dt><a class="permalink" href="#/"><code class="Cm" id="/">/</code></a></dt>
+      <dd>Prompt for a search pattern and start searching for matching commits.
+          The search pattern is an extended regular expression which is matched
+          against a commit's author name, committer name, log message, and
+          commit ID SHA1 hash. Regular expression syntax is documented in
+          <a class="Xr">re_format(7)</a>.</dd>
+      <dt><a class="permalink" href="#n"><code class="Cm" id="n">n</code></a></dt>
+      <dd>Find the next commit which matches the current search pattern.
+          Searching continues until either a match is found or the
+          <code class="Cm">Backspace</code> key is pressed.</dd>
+      <dt><a class="permalink" href="#N"><code class="Cm" id="N">N</code></a></dt>
+      <dd>Find the previous commit which matches the current search pattern.
+          Searching continues until either a match is found or the
+          <code class="Cm">Backspace</code> key is pressed.</dd>
+      <dt><a class="permalink" href="#Ctrl+l"><code class="Cm" id="Ctrl+l">Ctrl+l</code></a></dt>
+      <dd>Reload the log view with new commits found in the repository.</dd>
+    </dl>
+    <p class="Pp">The options for <code class="Cm">tog log</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#c"><code class="Fl" id="c">-c</code></a>
+        <var class="Ar">commit</var></dt>
+      <dd>Start traversing history at the specified
+          <var class="Ar">commit</var>. The expected argument is the name of a
+          branch or a commit ID SHA1 hash. An abbreviated hash argument will be
+          expanded to a full SHA1 hash automatically, provided the abbreviation
+          is unique. If this option is not specified, default to the work tree's
+          current branch if invoked in a work tree, or to the repository's HEAD
+          reference.</dd>
+      <dt><a class="permalink" href="#r"><code class="Fl" id="r">-r</code></a>
+        <var class="Ar">repository-path</var></dt>
+      <dd>Use the repository at the specified path. If not specified, assume the
+          repository is located at or above the current working directory.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#diff"><code class="Cm" id="diff">diff</code></a>
+    [<var class="Ar">repository-path</var>] <var class="Ar">object1</var>
+    <var class="Ar">object2</var></dt>
+  <dd>Display the differences between two objects in the repository. Each
+      <var class="Ar">object</var> argument is an object ID SHA1 hash. An
+      abbreviated hash argument will be expanded to a full SHA1 hash
+      automatically, provided the abbreviation is unique. Both objects must be
+      of the same type (blobs, trees, or commits). If the
+      <var class="Ar">repository path</var> is omitted, use the current working
+      directory.
+    <p class="Pp">The key bindings for <code class="Cm">tog diff</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#Down-arrow,_j"><code class="Cm" id="Down-arrow,_j">Down-arrow,
+        j</code></a></dt>
+      <dd>Scroll down.</dd>
+      <dt><a class="permalink" href="#Up-arrow,_k"><code class="Cm" id="Up-arrow,_k">Up-arrow,
+        k</code></a></dt>
+      <dd>Scroll up.</dd>
+      <dt><a class="permalink" href="#Page-down,_Space,_Ctrl+f"><code class="Cm" id="Page-down,_Space,_Ctrl+f">Page-down,
+        Space, Ctrl+f</code></a></dt>
+      <dd>Scroll down one page.</dd>
+      <dt><a class="permalink" href="#Page-up,_Ctrl+b_2"><code class="Cm" id="Page-up,_Ctrl+b_2">Page-up,
+        Ctrl+b</code></a></dt>
+      <dd>Scroll up one page.</dd>
+      <dt>[</dt>
+      <dd>Reduce the amount of diff context lines.</dd>
+      <dt>]</dt>
+      <dd>Increase the amount of diff context lines.</dd>
+      <dt><a class="permalink" href="#_,_Comma"><code class="Cm" id="_,_Comma">&lt;,
+        Comma</code></a></dt>
+      <dd>If the diff view was opened via the log view, move to the previous
+          (younger) commit.</dd>
+      <dt><a class="permalink" href="#_,_Full_stop"><code class="Cm" id="_,_Full_stop">&gt;,
+        Full stop</code></a></dt>
+      <dd>If the diff view was opened via the log view, move to the next (older)
+          commit.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#blame"><code class="Cm" id="blame">blame</code></a>
+    [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+    [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+    <var class="Ar">path</var></dt>
+  <dd>Display line-by-line history of a file at the specified path.
+    <p class="Pp">The key bindings for <code class="Cm">tog blame</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#Down-arrow,_j,_Page-down,_Space"><code class="Cm" id="Down-arrow,_j,_Page-down,_Space">Down-arrow,
+        j, Page-down, Space</code></a></dt>
+      <dd>Move the selection cursor down.</dd>
+      <dt><a class="permalink" href="#Up-arrow,_k,_Page-up"><code class="Cm" id="Up-arrow,_k,_Page-up">Up-arrow,
+        k, Page-up</code></a></dt>
+      <dd>Move the selection cursor up.</dd>
+      <dt><a class="permalink" href="#Enter"><code class="Cm" id="Enter">Enter</code></a></dt>
+      <dd>Open a <code class="Cm">diff</code> view for the currently selected
+          line's commit.</dd>
+      <dt><a class="permalink" href="#b"><code class="Cm" id="b">b</code></a></dt>
+      <dd>Reload the <code class="Cm">blame</code> view with the version of the
+          file as found in the currently selected line's commit.</dd>
+      <dt><a class="permalink" href="#p"><code class="Cm" id="p">p</code></a></dt>
+      <dd>Reload the <code class="Cm">blame</code> view with the version of the
+          file as found in the parent commit of the currently selected line's
+          commit.</dd>
+      <dt><a class="permalink" href="#B"><code class="Cm" id="B">B</code></a></dt>
+      <dd>Reload the <code class="Cm">blame</code> view with the previously
+          blamed commit.</dd>
+      <dt><a class="permalink" href="#/_2"><code class="Cm" id="/_2">/</code></a></dt>
+      <dd>Prompt for a search pattern and start searching for matching line. The
+          search pattern is an extended regular expression. Regular expression
+          syntax is documented in <a class="Xr">re_format(7)</a>.</dd>
+      <dt><a class="permalink" href="#n_2"><code class="Cm" id="n_2">n</code></a></dt>
+      <dd>Find the next line which matches the current search pattern.</dd>
+      <dt><a class="permalink" href="#N_2"><code class="Cm" id="N_2">N</code></a></dt>
+      <dd>Find the previous line which matches the current search pattern.</dd>
+    </dl>
+    <p class="Pp">The options for <code class="Cm">tog blame</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#c_2"><code class="Fl" id="c_2">-c</code></a>
+        <var class="Ar">commit</var></dt>
+      <dd>Start traversing history at the specified
+          <var class="Ar">commit</var>. The expected argument is the name of a
+          branch or a commit ID SHA1 hash. An abbreviated hash argument will be
+          expanded to a full SHA1 hash automatically, provided the abbreviation
+          is unique.</dd>
+      <dt><a class="permalink" href="#r_2"><code class="Fl" id="r_2">-r</code></a>
+        <var class="Ar">repository-path</var></dt>
+      <dd>Use the repository at the specified path. If not specified, assume the
+          repository is located at or above the current working directory.</dd>
+    </dl>
+  </dd>
+  <dt><a class="permalink" href="#tree"><code class="Cm" id="tree">tree</code></a>
+    [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+    [<var class="Ar">repository-path</var>]</dt>
+  <dd>Display the repository tree. If the <var class="Ar">repository path</var>
+      is omitted, assume the repository is located in the current working
+      directory.
+    <p class="Pp">The key bindings for <code class="Cm">tog tree</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#Down-arrow,_j,_Page-down"><code class="Cm" id="Down-arrow,_j,_Page-down">Down-arrow,
+        j, Page-down</code></a></dt>
+      <dd>Move the selection cursor down.</dd>
+      <dt><a class="permalink" href="#Up-arrow,_k,_Page-up_2"><code class="Cm" id="Up-arrow,_k,_Page-up_2">Up-arrow,
+        k, Page-up</code></a></dt>
+      <dd>Move the selection cursor up.</dd>
+      <dt><a class="permalink" href="#Enter_2"><code class="Cm" id="Enter_2">Enter</code></a></dt>
+      <dd>Enter the currently selected directory, or switch to the
+          <code class="Cm">blame</code> view for the currently selected
+        file.</dd>
+      <dt><a class="permalink" href="#l"><code class="Cm" id="l">l</code></a></dt>
+      <dd>Open a <code class="Cm">log</code> view for the currently selected
+          tree entry.</dd>
+      <dt><a class="permalink" href="#Backspace_2"><code class="Cm" id="Backspace_2">Backspace</code></a></dt>
+      <dd>Move back to the parent directory.</dd>
+      <dt><a class="permalink" href="#i"><code class="Cm" id="i">i</code></a></dt>
+      <dd>Show object IDs for all objects displayed in the
+          <code class="Cm">tree</code> view.</dd>
+      <dt><a class="permalink" href="#/_3"><code class="Cm" id="/_3">/</code></a></dt>
+      <dd>Prompt for a search pattern and start searching for matching tree
+          entries. The search pattern is an extended regular expression which is
+          matched against the tree entry's name. Regular expression syntax is
+          documented in <a class="Xr">re_format(7)</a>.</dd>
+      <dt><a class="permalink" href="#n_3"><code class="Cm" id="n_3">n</code></a></dt>
+      <dd>Find the next tree entry which matches the current search
+        pattern.</dd>
+      <dt><a class="permalink" href="#N_3"><code class="Cm" id="N_3">N</code></a></dt>
+      <dd>Find the previous tree entry which matches the current search
+        pattern.</dd>
+    </dl>
+    <p class="Pp">The options for <code class="Cm">tog tree</code> are as
+        follows:</p>
+    <dl class="Bl-tag">
+      <dt><a class="permalink" href="#c_3"><code class="Fl" id="c_3">-c</code></a>
+        <var class="Ar">commit</var></dt>
+      <dd>Start traversing history at the specified
+          <var class="Ar">commit</var>. The expected argument is the name of a
+          branch or a commit ID SHA1 hash. An abbreviated hash argument will be
+          expanded to a full SHA1 hash automatically, provided the abbreviation
+          is unique.</dd>
+    </dl>
+  </dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="EXIT_STATUS"><a class="permalink" href="#EXIT_STATUS">EXIT
+  STATUS</a></h1>
+The <code class="Nm">tog</code> utility exits&#x00A0;0 on success,
+  and&#x00A0;&gt;0 if an error occurs.
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+  ALSO</a></h1>
+<a class="Xr">got(1)</a>, <a class="Xr">git-repository(5)</a>,
+  <a class="Xr">re_format(7)</a>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
+<span class="An">Stefan Sperling</span>
+  &lt;<a class="Mt" href="mailto:stsp@openbsd.org">stsp@openbsd.org</a>&gt;
+<br/>
+<span class="An">joshua stein</span>
+  &lt;<a class="Mt" href="mailto:jcs@openbsd.org">jcs@openbsd.org</a>&gt;
+</section>
+</div>
+<table class="foot">
+  <tr>
+    <td class="foot-date">August 4, 2019</td>
+    <td class="foot-os">OpenBSD 6.5</td>
+  </tr>
+</table>
+</body>
+</html>