Autogenerated HTML docs for v2.12.0-rc1-28-gd09b6
diff --git a/RelNotes/2.12.0.txt b/RelNotes/2.12.0.txt
index 0c6eed2..3c539da 100644
--- a/RelNotes/2.12.0.txt
+++ b/RelNotes/2.12.0.txt
@@ -131,6 +131,9 @@
    other than the ones that are expected to be updated (i.e. branches,
    remote-tracking branches and notes).
 
+ * Comes with more command line completion (in contrib/) for recently
+   introduced options.
+
 
 Performance, Internal Implementation, Development Support etc.
 
@@ -436,6 +439,29 @@
    with AsciiDoc.  "make USE_ASCIIDOCTOR=YesPlease" to use it out of
    the box to document our pages is getting closer to reality.
 
+ * Correct command line completion (in contrib/) on "git svn"
+   (merge 2cbad17642 ew/complete-svn-authorship-options later to maint).
+
+ * Incorrect usage help message for "git worktree prune" has been fixed.
+   (merge 2488dcab22 ps/worktree-prune-help-fix later to maint).
+
+ * Adjust a perf test to new world order where commands that do
+   require a repository are really strict about having a repository.
+   (merge c86000c1a7 rs/p5302-create-repositories-before-tests later to maint).
+
+ * "git log --graph" did not work well with "--name-only", even though
+   other forms of "diff" output were handled correctly.
+   (merge f5022b5fed jk/log-graph-name-only later to maint).
+
+ * The push-options given via the "--push-options" option were not
+   passed through to external remote helpers such as "smart HTTP" that
+   are invoked via the transport helper.
+
+ * The documentation explained what "git stash" does to the working
+   tree (after stashing away the local changes) in terms of "reset
+   --hard", which was exposing an unnecessary implementation detail.
+   (merge 20a7e06172 tg/stash-doc-cleanup later to maint).
+
  * Other minor doc, test and build updates and code cleanups.
    (merge f2627d9b19 sb/submodule-config-cleanup later to maint).
    (merge 384f1a167b sb/unpack-trees-cleanup later to maint).
@@ -444,3 +470,7 @@
    (merge 0aaad415bc rs/absolute-pathdup later to maint).
    (merge 4432dd6b5b rs/receive-pack-cleanup later to maint).
    (merge 540a398e9c sg/mailmap-self later to maint).
+   (merge 209df269a6 nd/rev-list-all-includes-HEAD-doc later to maint).
+   (merge 941b9c5270 sb/doc-unify-bottom later to maint).
+   (merge 2aaf37b62c jk/doc-remote-helpers-markup-fix later to maint).
+   (merge e91461b332 jk/doc-submodule-markup-fix later to maint).
diff --git a/git-difftool.html b/git-difftool.html
index c9aab8a..9a33927 100644
--- a/git-difftool.html
+++ b/git-difftool.html
@@ -874,13 +874,14 @@
 -g

 </dt>

 <dt class="hdlist1">

---gui

+--[no-]gui

 </dt>

 <dd>

 <p>

         When <em>git-difftool</em> is invoked with the <code>-g</code> or <code>--gui</code> option

         the default diff tool will be read from the configured

-        <code>diff.guitool</code> variable instead of <code>diff.tool</code>.

+        <code>diff.guitool</code> variable instead of <code>diff.tool</code>. The <code>--no-gui</code>

+        option can be used to override this setting.

 </p>

 </dd>

 <dt class="hdlist1">

@@ -1001,7 +1002,7 @@
 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2016-07-13 14:58:50 PDT

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/git-difftool.txt b/git-difftool.txt
index 224fb30..96c26e6 100644
--- a/git-difftool.txt
+++ b/git-difftool.txt
@@ -86,10 +86,11 @@
 	Additionally, `$BASE` is set in the environment.
 
 -g::
---gui::
+--[no-]gui::
 	When 'git-difftool' is invoked with the `-g` or `--gui` option
 	the default diff tool will be read from the configured
-	`diff.guitool` variable instead of `diff.tool`.
+	`diff.guitool` variable instead of `diff.tool`. The `--no-gui`
+	option can be used to override this setting.
 
 --[no-]trust-exit-code::
 	'git-difftool' invokes a diff tool individually on each file.
diff --git a/git-log.html b/git-log.html
index 4a59aef..11197db 100644
--- a/git-log.html
+++ b/git-log.html
@@ -1163,8 +1163,8 @@
 </dt>

 <dd>

 <p>

-        Pretend as if all the refs in <code>refs/</code> are listed on the

-        command line as <em>&lt;commit&gt;</em>.

+        Pretend as if all the refs in <code>refs/</code>, along with <code>HEAD</code>, are

+        listed on the command line as <em>&lt;commit&gt;</em>.

 </p>

 </dd>

 <dt class="hdlist1">

diff --git a/git-push.html b/git-push.html
index 2c38f1c..94874f4 100644
--- a/git-push.html
+++ b/git-push.html
@@ -1129,7 +1129,7 @@
 --no-recurse-submodules

 </dt>

 <dt class="hdlist1">

---recurse-submodules=check|on-demand|no

+--recurse-submodules=check|on-demand|only|no

 </dt>

 <dd>

 <p>

@@ -1140,11 +1140,12 @@
         remote of the submodule. If any commits are missing the push will

         be aborted and exit with non-zero status. If <em>on-demand</em> is used

         all submodules that changed in the revisions to be pushed will be

-        pushed. If on-demand was not able to push all necessary revisions

-        it will also be aborted and exit with non-zero status. A value of

-        <em>no</em> or using <code>--no-recurse-submodules</code> can be used to override the

-        push.recurseSubmodules configuration variable when no submodule

-        recursion is required.

+        pushed. If on-demand was not able to push all necessary revisions it will

+        also be aborted and exit with non-zero status. If <em>only</em> is used all

+        submodules will be recursively pushed while the superproject is left

+        unpushed. A value of <em>no</em> or using <code>--no-recurse-submodules</code> can be used

+        to override the push.recurseSubmodules configuration variable when no

+        submodule recursion is required.

 </p>

 </dd>

 <dt class="hdlist1">

@@ -1830,7 +1831,7 @@
 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2017-01-10 15:42:58 PST

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/git-push.txt b/git-push.txt
index 8eefabd..1624a35 100644
--- a/git-push.txt
+++ b/git-push.txt
@@ -272,7 +272,7 @@
 	standard error stream is not directed to a terminal.
 
 --no-recurse-submodules::
---recurse-submodules=check|on-demand|no::
+--recurse-submodules=check|on-demand|only|no::
 	May be used to make sure all submodule commits used by the
 	revisions to be pushed are available on a remote-tracking branch.
 	If 'check' is used Git will verify that all submodule commits that
@@ -280,11 +280,12 @@
 	remote of the submodule. If any commits are missing the push will
 	be aborted and exit with non-zero status. If 'on-demand' is used
 	all submodules that changed in the revisions to be pushed will be
-	pushed. If on-demand was not able to push all necessary revisions
-	it will also be aborted and exit with non-zero status. A value of
-	'no' or using `--no-recurse-submodules` can be used to override the
-	push.recurseSubmodules configuration variable when no submodule
-	recursion is required.
+	pushed. If on-demand was not able to push all necessary revisions it will
+	also be aborted and exit with non-zero status. If 'only' is used all
+	submodules will be recursively pushed while the superproject is left
+	unpushed. A value of 'no' or using `--no-recurse-submodules` can be used
+	to override the push.recurseSubmodules configuration variable when no
+	submodule recursion is required.
 
 --[no-]verify::
 	Toggle the pre-push hook (see linkgit:githooks[5]).  The
diff --git a/git-reset.html b/git-reset.html
index bd9a28d..b9f6a15 100644
--- a/git-reset.html
+++ b/git-reset.html
@@ -1220,6 +1220,74 @@
 </li>

 </ol></div>

 </dd>

+<dt class="hdlist1">

+Split a commit into two

+</dt>

+<dd>

+<div class="paragraph"><p>Suppose that you have created a commit, but later decide that you want to break

+apart the changes into two logical chunks and commit each separately. You want

+to include part of the original commit into the first commit, while including

+the remainder in a second commit. You can use git reset to rewind the history

+without changing the index, and then use git add -p to interactively select

+which hunks to put into the first commit.</p></div>

+<div class="listingblock">

+<div class="content">

+<pre><code>$ git reset HEAD^                           <b>&lt;1&gt;</b>

+$ git add -p                                <b>&lt;2&gt;</b>

+$ git diff --cached                         <b>&lt;3&gt;</b>

+$ git commit -c HEAD@{1}                    <b>&lt;4&gt;</b>

+...

+$ git add ...                               <b>&lt;5&gt;</b>

+$ git diff --cached                         <b>&lt;6&gt;</b>

+$ git commit ...                            <b>&lt;7&gt;</b></code></pre>

+</div></div>

+<div class="colist arabic"><ol>

+<li>

+<p>

+First, reset the history back one commit so that we remove the original

+    commit, but leave the working tree with all the changes.

+</p>

+</li>

+<li>

+<p>

+Now, interactively select hunks to add to a new commit using git add -p.

+    This will ask for each hunk separately and you can use simple commands like

+    "yes, include", "no don&#8217;t include" or even "edit".

+</p>

+</li>

+<li>

+<p>

+Once satisfied with the hunks, you should verify that it is what you

+    expected by using git diff --cached to show all changes in the index.

+</p>

+</li>

+<li>

+<p>

+Next, commit the changes stored in the index. "-c" specifies to load the

+    editor with a commit message from a previous commit so that you can re-use the

+    HEAD used to be prior to the reset command. See <a href="git-reflog.html">git-reflog(1)</a> for

+    more details.

+</p>

+</li>

+<li>

+<p>

+Now you&#8217;ve created the first commit, and can repeat steps 2-4 as often as

+    you like to break the work into any number of commits. Here we show a second

+    step which simply adds the remaining changes.

+</p>

+</li>

+<li>

+<p>

+Then check again that the changes are what you expected to add.

+</p>

+</li>

+<li>

+<p>

+And finally commit the remaining changes.

+</p>

+</li>

+</ol></div>

+</dd>

 </dl></div>

 </div>

 </div>

@@ -1352,7 +1420,7 @@
 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2014-04-08 12:47:26 PDT

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/git-reset.txt b/git-reset.txt
index 25432d9..add6220 100644
--- a/git-reset.txt
+++ b/git-reset.txt
@@ -292,6 +292,44 @@
 <3> But you can use "reset --keep" to remove the unwanted commit after
     you switched to "branch2".
 
+Split a commit into two::
++
+Suppose that you have created a commit, but later decide that you want to break
+apart the changes into two logical chunks and commit each separately. You want
+to include part of the original commit into the first commit, while including
+the remainder in a second commit. You can use git reset to rewind the history
+without changing the index, and then use git add -p to interactively select
+which hunks to put into the first commit.
++
+------------
+$ git reset HEAD^                           <1>
+$ git add -p                                <2>
+$ git diff --cached                         <3>
+$ git commit -c HEAD@{1}                    <4>
+...
+$ git add ...                               <5>
+$ git diff --cached                         <6>
+$ git commit ...                            <7>
+------------
++
+<1> First, reset the history back one commit so that we remove the original
+    commit, but leave the working tree with all the changes.
+<2> Now, interactively select hunks to add to a new commit using git add -p.
+    This will ask for each hunk separately and you can use simple commands like
+    "yes, include", "no don't include" or even "edit".
+<3> Once satisfied with the hunks, you should verify that it is what you
+    expected by using git diff --cached to show all changes in the index.
+<4> Next, commit the changes stored in the index. "-c" specifies to load the
+    editor with a commit message from a previous commit so that you can re-use the
+    original commit message. HEAD@{1} is special notation to reference what
+    HEAD used to be prior to the reset command. See linkgit:git-reflog[1] for
+    more details.
+<5> Now you've created the first commit, and can repeat steps 2-4 as often as
+    you like to break the work into any number of commits. Here we show a second
+    step which simply adds the remaining changes.
+<6> Then check again that the changes are what you expected to add.
+<7> And finally commit the remaining changes.
+
 
 DISCUSSION
 ----------
diff --git a/git-rev-list.html b/git-rev-list.html
index 16ab0ce..29d9f78 100644
--- a/git-rev-list.html
+++ b/git-rev-list.html
@@ -1105,8 +1105,8 @@
 </dt>

 <dd>

 <p>

-        Pretend as if all the refs in <code>refs/</code> are listed on the

-        command line as <em>&lt;commit&gt;</em>.

+        Pretend as if all the refs in <code>refs/</code>, along with <code>HEAD</code>, are

+        listed on the command line as <em>&lt;commit&gt;</em>.

 </p>

 </dd>

 <dt class="hdlist1">

diff --git a/git-stash.html b/git-stash.html
index 2982b66..7261037 100644
--- a/git-stash.html
+++ b/git-stash.html
@@ -793,8 +793,9 @@
 </dt>

 <dd>

 <p>

-        Save your local modifications to a new <em>stash</em>, and run <code>git reset

-        --hard</code> to revert them.  The &lt;message&gt; part is optional and gives

+        Save your local modifications to a new <em>stash</em> and roll them

+        back to HEAD (in the working tree and in the index).

+        The &lt;message&gt; part is optional and gives

         the description along with the stashed state.  For quickly making

         a snapshot, you can omit <em>both</em> "save" and &lt;message&gt;, but giving

         only &lt;message&gt; does not trigger this action to prevent a misspelled

@@ -1084,7 +1085,7 @@
 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2016-10-31 14:39:16 PDT

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/git-stash.txt b/git-stash.txt
index 2e9cef0..2e9e344 100644
--- a/git-stash.txt
+++ b/git-stash.txt
@@ -47,8 +47,9 @@
 
 save [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<message>]::
 
-	Save your local modifications to a new 'stash', and run `git reset
-	--hard` to revert them.  The <message> part is optional and gives
+	Save your local modifications to a new 'stash' and roll them
+	back to HEAD (in the working tree and in the index).
+	The <message> part is optional and gives
 	the description along with the stashed state.  For quickly making
 	a snapshot, you can omit _both_ "save" and <message>, but giving
 	only <message> does not trigger this action to prevent a misspelled
diff --git a/git-submodule.html b/git-submodule.html
index 5b6e8b3..3a9b225 100644
--- a/git-submodule.html
+++ b/git-submodule.html
@@ -748,17 +748,12 @@
 <h2 id="_synopsis">SYNOPSIS</h2>

 <div class="sectionbody">

 <div class="verseblock">

-<pre class="content"><em>git submodule</em> [--quiet] add [-b &lt;branch&gt;] [-f|--force] [--name &lt;name&gt;]

-              [--reference &lt;repository&gt;] [--depth &lt;depth&gt;] [--] &lt;repository&gt; [&lt;path&gt;]

+<pre class="content"><em>git submodule</em> [--quiet] add [&lt;options&gt;] [--] &lt;repository&gt; [&lt;path&gt;]

 <em>git submodule</em> [--quiet] status [--cached] [--recursive] [--] [&lt;path&gt;&#8230;]

 <em>git submodule</em> [--quiet] init [--] [&lt;path&gt;&#8230;]

 <em>git submodule</em> [--quiet] deinit [-f|--force] (--all|[--] &lt;path&gt;&#8230;)

-<em>git submodule</em> [--quiet] update [--init] [--remote] [-N|--no-fetch]

-              [--[no-]recommend-shallow] [-f|--force] [--rebase|--merge]

-              [--reference &lt;repository&gt;] [--depth &lt;depth&gt;] [--recursive]

-              [--jobs &lt;n&gt;] [--] [&lt;path&gt;&#8230;]

-<em>git submodule</em> [--quiet] summary [--cached|--files] [(-n|--summary-limit) &lt;n&gt;]

-              [commit] [--] [&lt;path&gt;&#8230;]

+<em>git submodule</em> [--quiet] update [&lt;options&gt;] [--] [&lt;path&gt;&#8230;]

+<em>git submodule</em> [--quiet] summary [&lt;options&gt;] [--] [&lt;path&gt;&#8230;]

 <em>git submodule</em> [--quiet] foreach [--recursive] &lt;command&gt;

 <em>git submodule</em> [--quiet] sync [--recursive] [--] [&lt;path&gt;&#8230;]

 <em>git submodule</em> [--quiet] absorbgitdirs [--] [&lt;path&gt;&#8230;]</pre>

@@ -805,7 +800,7 @@
 <div class="sectionbody">

 <div class="dlist"><dl>

 <dt class="hdlist1">

-add

+add [-b &lt;branch&gt;] [-f|--force] [--name &lt;name&gt;] [--reference &lt;repository&gt;] [--depth &lt;depth&gt;] [--] &lt;repository&gt; [&lt;path&gt;]

 </dt>

 <dd>

 <p>

@@ -847,7 +842,7 @@
 locate the submodule using the relative URL in .gitmodules.</p></div>

 </dd>

 <dt class="hdlist1">

-status

+status [--cached] [--recursive] [--] [&lt;path&gt;&#8230;]

 </dt>

 <dd>

 <p>

@@ -867,7 +862,7 @@
 too (and can also report changes to a submodule&#8217;s work tree).</p></div>

 </dd>

 <dt class="hdlist1">

-init

+init [--] [&lt;path&gt;&#8230;]

 </dt>

 <dd>

 <p>

@@ -887,7 +882,7 @@
 </p>

 </dd>

 <dt class="hdlist1">

-deinit

+deinit [-f|--force] (--all|[--] &lt;path&gt;&#8230;)

 </dt>

 <dd>

 <p>

@@ -906,7 +901,7 @@
 be removed even if it contains local modifications.</p></div>

 </dd>

 <dt class="hdlist1">

-update

+update [--init] [--remote] [-N|--no-fetch] [--[no-]recommend-shallow] [-f|--force] [--checkout|--rebase|--merge] [--reference &lt;repository&gt;] [--depth &lt;depth&gt;] [--recursive] [--jobs &lt;n&gt;] [--] [&lt;path&gt;&#8230;]

 </dt>

 <dd>

 <div class="openblock">

@@ -915,7 +910,10 @@
 expects by cloning missing submodules and updating the working tree of

 the submodules. The "updating" can be done in several ways depending

 on command line options and the value of <code>submodule.&lt;name&gt;.update</code>

-configuration variable. Supported update procedures are:</p></div>

+configuration variable. The command line option takes precedence over

+the configuration variable. if neither is given, a checkout is performed.

+update procedures supported both from the command line as well as setting

+<code>submodule.&lt;name&gt;.update</code>:</p></div>

 <div class="dlist"><dl>

 <dt class="hdlist1">

 checkout

@@ -923,10 +921,7 @@
 <dd>

 <p>

 the commit recorded in the superproject will be

-            checked out in the submodule on a detached HEAD. This is

-            done when <code>--checkout</code> option is given, or no option is

-            given, and <code>submodule.&lt;name&gt;.update</code> is unset, or if it is

-            set to <em>checkout</em>.

+            checked out in the submodule on a detached HEAD.

 </p>

 <div class="paragraph"><p>If <code>--force</code> is specified, the submodule will be checked out (using

 <code>git checkout --force</code> if appropriate), even if the commit specified

@@ -939,9 +934,7 @@
 <dd>

 <p>

 the current branch of the submodule will be rebased

-            onto the commit recorded in the superproject. This is done

-            when <code>--rebase</code> option is given, or no option is given, and

-            <code>submodule.&lt;name&gt;.update</code> is set to <em>rebase</em>.

+            onto the commit recorded in the superproject.

 </p>

 </dd>

 <dt class="hdlist1">

@@ -950,11 +943,13 @@
 <dd>

 <p>

 the commit recorded in the superproject will be merged

-            into the current branch in the submodule. This is done

-            when <code>--merge</code> option is given, or no option is given, and

-            <code>submodule.&lt;name&gt;.update</code> is set to <em>merge</em>.

+            into the current branch in the submodule.

 </p>

 </dd>

+</dl></div>

+<div class="paragraph"><p>The following procedures are only available via the <code>submodule.&lt;name&gt;.update</code>

+configuration variable:</p></div>

+<div class="dlist"><dl>

 <dt class="hdlist1">

 custom command

 </dt>

@@ -962,14 +957,20 @@
 <p>

 arbitrary shell command that takes a single

             argument (the sha1 of the commit recorded in the

-            superproject) is executed. This is done when no option is

-            given, and <code>submodule.&lt;name&gt;.update</code> has the form of

-            <em>!command</em>.

+            superproject) is executed. When <code>submodule.&lt;name&gt;.update</code>

+            is set to <em>!command</em>, the remainder after the exclamation mark

+            is the custom command.

+</p>

+</dd>

+<dt class="hdlist1">

+none

+</dt>

+<dd>

+<p>

+the submodule is not updated.

 </p>

 </dd>

 </dl></div>

-<div class="paragraph"><p>When no option is given and <code>submodule.&lt;name&gt;.update</code> is set to <em>none</em>,

-the submodule is not updated.</p></div>

 <div class="paragraph"><p>If the submodule is not yet initialized, and you just want to use the

 setting as stored in .gitmodules, you can automatically initialize the

 submodule with the <code>--init</code> option.</p></div>

@@ -978,7 +979,7 @@
 </div></div>

 </dd>

 <dt class="hdlist1">

-summary

+summary [--cached|--files] [(-n|--summary-limit) &lt;n&gt;] [commit] [--] [&lt;path&gt;&#8230;]

 </dt>

 <dd>

 <p>

@@ -995,7 +996,7 @@
 information too.</p></div>

 </dd>

 <dt class="hdlist1">

-foreach

+foreach [--recursive] &lt;command&gt;

 </dt>

 <dd>

 <p>

@@ -1015,12 +1016,15 @@
         the processing to terminate. This can be overridden by adding <em>|| :</em>

         to the end of the command.

 </p>

-<div class="paragraph"><p>As an example, <code>git submodule foreach 'echo $path &#96;git

-rev-parse HEAD&#96;'</code> will show the path and currently checked out

-commit for each submodule.</p></div>

+<div class="paragraph"><p>As an example, the command below will show the path and currently

+checked out commit for each submodule:</p></div>

+<div class="listingblock">

+<div class="content">

+<pre><code>git submodule foreach 'echo $path `git rev-parse HEAD`'</code></pre>

+</div></div>

 </dd>

 <dt class="hdlist1">

-sync

+sync [--recursive] [--] [&lt;path&gt;&#8230;]

 </dt>

 <dd>

 <p>

@@ -1348,7 +1352,7 @@
 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2017-01-10 15:42:58 PST

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/git-submodule.txt b/git-submodule.txt
index 918bd1d..8acc72e 100644
--- a/git-submodule.txt
+++ b/git-submodule.txt
@@ -9,17 +9,12 @@
 SYNOPSIS
 --------
 [verse]
-'git submodule' [--quiet] add [-b <branch>] [-f|--force] [--name <name>]
-	      [--reference <repository>] [--depth <depth>] [--] <repository> [<path>]
+'git submodule' [--quiet] add [<options>] [--] <repository> [<path>]
 'git submodule' [--quiet] status [--cached] [--recursive] [--] [<path>...]
 'git submodule' [--quiet] init [--] [<path>...]
 'git submodule' [--quiet] deinit [-f|--force] (--all|[--] <path>...)
-'git submodule' [--quiet] update [--init] [--remote] [-N|--no-fetch]
-	      [--[no-]recommend-shallow] [-f|--force] [--rebase|--merge]
-	      [--reference <repository>] [--depth <depth>] [--recursive]
-	      [--jobs <n>] [--] [<path>...]
-'git submodule' [--quiet] summary [--cached|--files] [(-n|--summary-limit) <n>]
-	      [commit] [--] [<path>...]
+'git submodule' [--quiet] update [<options>] [--] [<path>...]
+'git submodule' [--quiet] summary [<options>] [--] [<path>...]
 'git submodule' [--quiet] foreach [--recursive] <command>
 'git submodule' [--quiet] sync [--recursive] [--] [<path>...]
 'git submodule' [--quiet] absorbgitdirs [--] [<path>...]
@@ -63,7 +58,7 @@
 
 COMMANDS
 --------
-add::
+add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--depth <depth>] [--] <repository> [<path>]::
 	Add the given repository as a submodule at the given path
 	to the changeset to be committed next to the current
 	project: the current project is termed the "superproject".
@@ -104,7 +99,7 @@
 superproject's URL needs to be provided: git-submodule will correctly
 locate the submodule using the relative URL in .gitmodules.
 
-status::
+status [--cached] [--recursive] [--] [<path>...]::
 	Show the status of the submodules. This will print the SHA-1 of the
 	currently checked out commit for each submodule, along with the
 	submodule path and the output of 'git describe' for the
@@ -121,7 +116,7 @@
 linkgit:git-status[1] and linkgit:git-diff[1] will provide that information
 too (and can also report changes to a submodule's work tree).
 
-init::
+init [--] [<path>...]::
 	Initialize the submodules recorded in the index (which were
 	added and committed elsewhere) by copying submodule
 	names and urls from .gitmodules to .git/config.
@@ -136,7 +131,7 @@
 	the explicit 'init' step if you do not intend to customize
 	any submodule locations.
 
-deinit::
+deinit [-f|--force] (--all|[--] <path>...)::
 	Unregister the given submodules, i.e. remove the whole
 	`submodule.$name` section from .git/config together with their work
 	tree. Further calls to `git submodule update`, `git submodule foreach`
@@ -152,20 +147,20 @@
 If `--force` is specified, the submodule's working tree will
 be removed even if it contains local modifications.
 
-update::
+update [--init] [--remote] [-N|--no-fetch] [--[no-]recommend-shallow] [-f|--force] [--checkout|--rebase|--merge] [--reference <repository>] [--depth <depth>] [--recursive] [--jobs <n>] [--] [<path>...]::
 +
 --
 Update the registered submodules to match what the superproject
 expects by cloning missing submodules and updating the working tree of
 the submodules. The "updating" can be done in several ways depending
 on command line options and the value of `submodule.<name>.update`
-configuration variable. Supported update procedures are:
+configuration variable. The command line option takes precedence over
+the configuration variable. if neither is given, a checkout is performed.
+update procedures supported both from the command line as well as setting
+`submodule.<name>.update`:
 
 	checkout;; the commit recorded in the superproject will be
-	    checked out in the submodule on a detached HEAD. This is
-	    done when `--checkout` option is given, or no option is
-	    given, and `submodule.<name>.update` is unset, or if it is
-	    set to 'checkout'.
+	    checked out in the submodule on a detached HEAD.
 +
 If `--force` is specified, the submodule will be checked out (using
 `git checkout --force` if appropriate), even if the commit specified
@@ -173,23 +168,21 @@
 checked out in the submodule.
 
 	rebase;; the current branch of the submodule will be rebased
-	    onto the commit recorded in the superproject. This is done
-	    when `--rebase` option is given, or no option is given, and
-	    `submodule.<name>.update` is set to 'rebase'.
+	    onto the commit recorded in the superproject.
 
 	merge;; the commit recorded in the superproject will be merged
-	    into the current branch in the submodule. This is done
-	    when `--merge` option is given, or no option is given, and
-	    `submodule.<name>.update` is set to 'merge'.
+	    into the current branch in the submodule.
+
+The following procedures are only available via the `submodule.<name>.update`
+configuration variable:
 
 	custom command;; arbitrary shell command that takes a single
 	    argument (the sha1 of the commit recorded in the
-	    superproject) is executed. This is done when no option is
-	    given, and `submodule.<name>.update` has the form of
-	    '!command'.
+	    superproject) is executed. When `submodule.<name>.update`
+	    is set to '!command', the remainder after the exclamation mark
+	    is the custom command.
 
-When no option is given and `submodule.<name>.update` is set to 'none',
-the submodule is not updated.
+	none;; the submodule is not updated.
 
 If the submodule is not yet initialized, and you just want to use the
 setting as stored in .gitmodules, you can automatically initialize the
@@ -198,7 +191,7 @@
 If `--recursive` is specified, this command will recurse into the
 registered submodules, and update any nested submodules within.
 --
-summary::
+summary [--cached|--files] [(-n|--summary-limit) <n>] [commit] [--] [<path>...]::
 	Show commit summary between the given commit (defaults to HEAD) and
 	working tree/index. For a submodule in question, a series of commits
 	in the submodule between the given super project commit and the
@@ -211,7 +204,7 @@
 Using the `--submodule=log` option with linkgit:git-diff[1] will provide that
 information too.
 
-foreach::
+foreach [--recursive] <command>::
 	Evaluates an arbitrary shell command in each checked out submodule.
 	The command has access to the variables $name, $path, $sha1 and
 	$toplevel:
@@ -228,11 +221,14 @@
 	the processing to terminate. This can be overridden by adding '|| :'
 	to the end of the command.
 +
-As an example, +git submodule foreach \'echo $path {backtick}git
-rev-parse HEAD{backtick}'+ will show the path and currently checked out
-commit for each submodule.
+As an example, the command below will show the path and currently
+checked out commit for each submodule:
++
+--------------
+git submodule foreach 'echo $path `git rev-parse HEAD`'
+--------------
 
-sync::
+sync [--recursive] [--] [<path>...]::
 	Synchronizes submodules' remote URL configuration setting
 	to the value specified in .gitmodules. It will only affect those
 	submodules which already have a URL entry in .git/config (that is the
diff --git a/gitcore-tutorial.html b/gitcore-tutorial.html
index 515f06f..4e0faec 100644
--- a/gitcore-tutorial.html
+++ b/gitcore-tutorial.html
@@ -2450,14 +2450,14 @@
 <div class="sect1">

 <h2 id="_git">GIT</h2>

 <div class="sectionbody">

-<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite.</p></div>

+<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>

 </div>

 </div>

 </div>

 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2016-12-19 16:18:00 PST

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/gitcore-tutorial.txt b/gitcore-tutorial.txt
index 22309cf..3a0ec8c 100644
--- a/gitcore-tutorial.txt
+++ b/gitcore-tutorial.txt
@@ -1658,4 +1658,4 @@
 
 GIT
 ---
-Part of the linkgit:git[1] suite.
+Part of the linkgit:git[1] suite
diff --git a/gitcvs-migration.html b/gitcvs-migration.html
index 80fac1a..af1fbdc 100644
--- a/gitcvs-migration.html
+++ b/gitcvs-migration.html
@@ -948,14 +948,14 @@
 <div class="sect1">

 <h2 id="_git">GIT</h2>

 <div class="sectionbody">

-<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite.</p></div>

+<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>

 </div>

 </div>

 </div>

 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2016-09-26 16:43:51 PDT

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/gitcvs-migration.txt b/gitcvs-migration.txt
index 4c6143c..1cd1283 100644
--- a/gitcvs-migration.txt
+++ b/gitcvs-migration.txt
@@ -203,4 +203,4 @@
 
 GIT
 ---
-Part of the linkgit:git[1] suite.
+Part of the linkgit:git[1] suite
diff --git a/gitdiffcore.html b/gitdiffcore.html
index c0ebe49..f243032 100644
--- a/gitdiffcore.html
+++ b/gitdiffcore.html
@@ -1055,14 +1055,14 @@
 <div class="sect1">

 <h2 id="_git">GIT</h2>

 <div class="sectionbody">

-<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite.</p></div>

+<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>

 </div>

 </div>

 </div>

 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2016-07-13 14:58:50 PDT

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/gitdiffcore.txt b/gitdiffcore.txt
index 08cf622..46bc6d0 100644
--- a/gitdiffcore.txt
+++ b/gitdiffcore.txt
@@ -288,4 +288,4 @@
 
 GIT
 ---
-Part of the linkgit:git[1] suite.
+Part of the linkgit:git[1] suite
diff --git a/gitglossary.html b/gitglossary.html
index f99296f..16bfcdb 100644
--- a/gitglossary.html
+++ b/gitglossary.html
@@ -1847,14 +1847,14 @@
 <div class="sect1">

 <h2 id="_git">GIT</h2>

 <div class="sectionbody">

-<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite.</p></div>

+<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>

 </div>

 </div>

 </div>

 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2014-10-16 14:29:57 PDT

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/gitglossary.txt b/gitglossary.txt
index 212e254..571f640 100644
--- a/gitglossary.txt
+++ b/gitglossary.txt
@@ -24,4 +24,4 @@
 
 GIT
 ---
-Part of the linkgit:git[1] suite.
+Part of the linkgit:git[1] suite
diff --git a/gitremote-helpers.html b/gitremote-helpers.html
index 2066421..34ca6a9 100644
--- a/gitremote-helpers.html
+++ b/gitremote-helpers.html
@@ -1342,7 +1342,7 @@
 </p>

 </dd>

 <dt class="hdlist1">

-<em>option cloning {'true</em>|<em>false</em>}

+<em>option cloning</em> {<em>true</em>|<em>false</em>}

 </dt>

 <dd>

 <p>

@@ -1351,7 +1351,7 @@
 </p>

 </dd>

 <dt class="hdlist1">

-<em>option update-shallow {'true</em>|<em>false</em>}

+<em>option update-shallow</em> {<em>true</em>|<em>false</em>}

 </dt>

 <dd>

 <p>

@@ -1359,13 +1359,22 @@
 </p>

 </dd>

 <dt class="hdlist1">

-<em>option pushcert {'true</em>|<em>false</em>}

+<em>option pushcert</em> {<em>true</em>|<em>false</em>}

 </dt>

 <dd>

 <p>

         GPG sign pushes.

 </p>

 </dd>

+<dt class="hdlist1">

+'option push-option &lt;string&gt;

+</dt>

+<dd>

+<p>

+        Transmit &lt;string&gt; as a push option. As the a push option

+        must not contain LF or NUL characters, the string is not encoded.

+</p>

+</dd>

 </dl></div>

 </div>

 </div>

@@ -1389,7 +1398,7 @@
 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2016-10-10 16:24:22 PDT

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/gitremote-helpers.txt b/gitremote-helpers.txt
index 9e8681f..e4b785e 100644
--- a/gitremote-helpers.txt
+++ b/gitremote-helpers.txt
@@ -452,16 +452,20 @@
 	Request the helper to perform a force update.  Defaults to
 	'false'.
 
-'option cloning {'true'|'false'}::
+'option cloning' {'true'|'false'}::
 	Notify the helper this is a clone request (i.e. the current
 	repository is guaranteed empty).
 
-'option update-shallow {'true'|'false'}::
+'option update-shallow' {'true'|'false'}::
 	Allow to extend .git/shallow if the new refs require it.
 
-'option pushcert {'true'|'false'}::
+'option pushcert' {'true'|'false'}::
 	GPG sign pushes.
 
+'option push-option <string>::
+	Transmit <string> as a push option. As the a push option
+	must not contain LF or NUL characters, the string is not encoded.
+
 SEE ALSO
 --------
 linkgit:git-remote[1]
diff --git a/gitrepository-layout.html b/gitrepository-layout.html
index e44ecf0..0eee30f 100644
--- a/gitrepository-layout.html
+++ b/gitrepository-layout.html
@@ -1221,14 +1221,14 @@
 <div class="sect1">

 <h2 id="_git">GIT</h2>

 <div class="sectionbody">

-<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite.</p></div>

+<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>

 </div>

 </div>

 </div>

 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2016-11-11 14:28:26 PST

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/gitrepository-layout.txt b/gitrepository-layout.txt
index a5f99cb..f51ed4e 100644
--- a/gitrepository-layout.txt
+++ b/gitrepository-layout.txt
@@ -289,4 +289,4 @@
 
 GIT
 ---
-Part of the linkgit:git[1] suite.
+Part of the linkgit:git[1] suite
diff --git a/gittutorial-2.html b/gittutorial-2.html
index 7e0c858..b0a2260 100644
--- a/gittutorial-2.html
+++ b/gittutorial-2.html
@@ -1162,14 +1162,14 @@
 <div class="sect1">

 <h2 id="_git">GIT</h2>

 <div class="sectionbody">

-<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite.</p></div>

+<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>

 </div>

 </div>

 </div>

 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2014-11-19 15:05:50 PST

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/gittutorial-2.txt b/gittutorial-2.txt
index 30d2119..e0976f6 100644
--- a/gittutorial-2.txt
+++ b/gittutorial-2.txt
@@ -433,4 +433,4 @@
 
 GIT
 ---
-Part of the linkgit:git[1] suite.
+Part of the linkgit:git[1] suite
diff --git a/gittutorial.html b/gittutorial.html
index 42e9b8f..bd15c79 100644
--- a/gittutorial.html
+++ b/gittutorial.html
@@ -1366,14 +1366,14 @@
 <div class="sect1">

 <h2 id="_git">GIT</h2>

 <div class="sectionbody">

-<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite.</p></div>

+<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>

 </div>

 </div>

 </div>

 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2016-02-17 14:30:28 PST

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/gittutorial.txt b/gittutorial.txt
index b3b58d3..794b833 100644
--- a/gittutorial.txt
+++ b/gittutorial.txt
@@ -674,4 +674,4 @@
 
 GIT
 ---
-Part of the linkgit:git[1] suite.
+Part of the linkgit:git[1] suite
diff --git a/gitworkflows.html b/gitworkflows.html
index 0ca400d..21ee417 100644
--- a/gitworkflows.html
+++ b/gitworkflows.html
@@ -1221,14 +1221,14 @@
 <div class="sect1">

 <h2 id="_git">GIT</h2>

 <div class="sectionbody">

-<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite.</p></div>

+<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>

 </div>

 </div>

 </div>

 <div id="footnotes"><hr /></div>

 <div id="footer">

 <div id="footer-text">

-Last updated 2013-08-20 08:40:27 PDT

+Last updated 2017-02-15 15:17:51 PST

 </div>

 </div>

 </body>

diff --git a/gitworkflows.txt b/gitworkflows.txt
index f16c414..177610e 100644
--- a/gitworkflows.txt
+++ b/gitworkflows.txt
@@ -477,4 +477,4 @@
 
 GIT
 ---
-Part of the linkgit:git[1] suite.
+Part of the linkgit:git[1] suite
diff --git a/rev-list-options.txt b/rev-list-options.txt
index 5da7cf5..a02f732 100644
--- a/rev-list-options.txt
+++ b/rev-list-options.txt
@@ -133,8 +133,8 @@
 	for all following revision specifiers, up to the next `--not`.
 
 --all::
-	Pretend as if all the refs in `refs/` are listed on the
-	command line as '<commit>'.
+	Pretend as if all the refs in `refs/`, along with `HEAD`, are
+	listed on the command line as '<commit>'.
 
 --branches[=<pattern>]::
 	Pretend as if all the refs in `refs/heads` are listed