Autogenerated HTML docs for v1.5.3.4-319-gdd817
authorJunio C Hamano <junio@hera.kernel.org>
Tue, 23 Oct 2007 01:23:31 +0000 (01:23 +0000)
committerJunio C Hamano <junio@hera.kernel.org>
Tue, 23 Oct 2007 01:23:31 +0000 (01:23 +0000)
41 files changed:
RelNotes-1.5.3.5.txt [new file with mode: 0644]
config.txt
git-archive.html
git-archive.txt
git-cherry-pick.html
git-cherry-pick.txt
git-config.html
git-diff.html
git-diff.txt
git-filter-branch.html
git-filter-branch.txt
git-gc.html
git-gc.txt
git-index-pack.html
git-index-pack.txt
git-instaweb.html
git-instaweb.txt
git-merge-index.html
git-merge-index.txt
git-push.html
git-push.txt
git-rebase.html
git-rebase.txt
git-reflog.html
git-reflog.txt
git-send-pack.html
git-send-pack.txt
git-stash.html
git-stash.txt
git-svn.html
git-svn.txt
git-tag.html
git-tag.txt
git.html
git.txt
gitk.html
gitk.txt
glossary.html
glossary.txt
user-manual.html
user-manual.txt

diff --git a/RelNotes-1.5.3.5.txt b/RelNotes-1.5.3.5.txt
new file mode 100644 (file)
index 0000000..9581e03
--- /dev/null
@@ -0,0 +1,73 @@
+GIT v1.5.3.5 Release Notes
+==========================
+
+Fixes since v1.5.3.4
+--------------------
+
+ * Comes with git-gui 0.8.4.
+
+ * "git-config" silently ignored options after --list; now it will
+   error out with a usage message.
+
+ * "git-config --file" failed if the argument used a relative path
+   as it changed directories before opening the file.
+
+ * "git-config --file" now displays a proper error message if it
+   cannot read the file specified on the command line.
+
+ * "git-config", "git-diff", "git-apply" failed if run from a
+   subdirectory with relative GIT_DIR and GIT_WORK_TREE set.
+
+ * "git-blame" crashed if run during a merge conflict.
+
+ * "git-add -i" did not handle single line hunks correctly.
+
+ * "git-rebase -i" and "git-stash apply" failed if external diff
+   drivers were used for one or more files in a commit.  They now
+   avoid calling the external diff drivers.
+
+ * "git-log --follow" did not work unless diff generation (e.g. -p)
+   was also requested.
+
+ * "git-log --follow -B" did not work at all.  Fixed.
+
+ * "git-log -M -B" did not correctly handle cases of very large files
+   being renamed and replaced by very small files in the same commit.
+
+ * "git-log" printed extra newlines between commits when a diff
+   was generated internally (e.g. -S or --follow) but not displayed.
+
+ * "git-push" error message is more helpful when pushing to a
+   repository with no matching refs and none specified.
+
+ * "git-push" now respects + (force push) on wildcard refspecs,
+   matching the behavior of git-fetch.
+
+ * "git-filter-branch" now updates the working directory when it
+   has finished filtering the current branch.
+
+ * "git-instaweb" no longer fails on Mac OS X.
+
+ * "git-cvsexportcommit" didn't always create new parent directories
+   before trying to create new child directories.  Fixed.
+
+ * "git-fetch" printed a scary (but bogus) error message while
+   fetching a tag that pointed to a tree or blob.  The error did
+   not impact correctness, only user perception.  The bogus error
+   is no longer printed.
+
+ * "git-ls-files --ignored" did not properly descend into non-ignored
+   directories that themselves contained ignored files if d_type
+   was not supported by the filesystem.  This bug impacted systems
+   such as AFS.  Fixed.
+
+ * Git segfaulted when reading an invalid .gitattributes file.  Fixed.
+
+ * post-receive-email example hook fixed was fixed for
+   non-fast-forward updates.
+
+ * Documentation updates for supported (but previously undocumented)
+   options of "git-archive" and "git-reflog".
+
+ * "make clean" no longer deletes the configure script that ships
+   with the git tarball, making multiple architecture builds easier.
index 971fd9f16fba0bf07983a5aa9d016a20e059d7b6..d4a476e2ff9322348df099bfdfbba2832c8d47a4 100644 (file)
@@ -188,7 +188,7 @@ core.worktree::
        Set the path to the working tree.  The value will not be
        used in combination with repositories found automatically in
        a .git directory (i.e. $GIT_DIR is not set).
-       This can be overriden by the GIT_WORK_TREE environment
+       This can be overridden by the GIT_WORK_TREE environment
        variable and the '--work-tree' command line option.
 
 core.logAllRefUpdates::
@@ -607,7 +607,7 @@ merge.verbosity::
        message if conflicts were detected. Level 1 outputs only
        conflicts, 2 outputs conflicts and file changes.  Level 5 and
        above outputs debugging information.  The default is level 2.
-       Can be overriden by 'GIT_MERGE_VERBOSITY' environment variable.
+       Can be overridden by 'GIT_MERGE_VERBOSITY' environment variable.
 
 merge.<driver>.name::
        Defines a human readable name for a custom low-level
index 5948cc6789e2aae96e543855c1244ae6c49c3f4e..437210699cb3e3f9a356846ff644247e9ebba329 100644 (file)
@@ -274,7 +274,8 @@ git-archive(1) Manual Page
 <div class="sectionbody">\r
 <div class="verseblock">\r
 <div class="content"><em>git-archive</em> --format=&lt;fmt&gt; [--list] [--prefix=&lt;prefix&gt;/] [&lt;extra&gt;]\r
-              [--remote=&lt;repo&gt;] &lt;tree-ish&gt; [path&#8230;]</div></div>\r
+              [--remote=&lt;repo&gt; [--exec=&lt;git-upload-archive&gt;]] &lt;tree-ish&gt;\r
+              [path&#8230;]</div></div>\r
 </div>\r
 <h2>DESCRIPTION</h2>\r
 <div class="sectionbody">\r
@@ -346,6 +347,15 @@ comment.</p>
 </p>\r
 </dd>\r
 <dt>\r
+--exec=&lt;git-upload-archive&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Used with --remote to specify the path to the\r
+        git-upload-archive executable on the remote side.\r
+</p>\r
+</dd>\r
+<dt>\r
 &lt;tree-ish&gt;\r
 </dt>\r
 <dd>\r
@@ -459,7 +469,7 @@ git archive --format=zip --prefix=git-docs/ HEAD:Documentation/ &gt; git-1.4.0-d
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 15-Sep-2007 07:45:31 UTC\r
+Last updated 23-Oct-2007 01:21:45 UTC\r
 </div>\r
 </div>\r
 </body>\r
index e1e2d60fef1b8fc85e30243f403bd11d80ca980b..7cd6526552155d3d120c886ed8ae78ae2d6be80d 100644 (file)
@@ -10,7 +10,8 @@ SYNOPSIS
 --------
 [verse]
 'git-archive' --format=<fmt> [--list] [--prefix=<prefix>/] [<extra>]
-             [--remote=<repo>] <tree-ish> [path...]
+             [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish>
+             [path...]
 
 DESCRIPTION
 -----------
@@ -52,6 +53,10 @@ OPTIONS
        Instead of making a tar archive from local repository,
        retrieve a tar archive from a remote repository.
 
+--exec=<git-upload-archive>::
+       Used with --remote to specify the path to the
+       git-upload-archive executable on the remote side.
+
 <tree-ish>::
        The tree or commit to produce an archive for.
 
index 27ee353e76a546899f428a20c383df197fef8763..3e510498ef505bba9c23cd0d427dafc218ab0d9e 100644 (file)
@@ -307,11 +307,12 @@ modifications from the HEAD commit).</p>
 </dt>\r
 <dd>\r
 <p>\r
-        Cause the command to append which commit was\r
-        cherry-picked after the original commit message when\r
-        making a commit.  Do not use this option if you are\r
-        cherry-picking from your private branch because the\r
-        information is useless to the recipient.  If on the\r
+        When recording the commit, append to the original commit\r
+        message a note that indicates which commit this change\r
+        was cherry-picked from.  Append the note only for cherry\r
+        picks without conflicts.  Do not use this option if\r
+        you are cherry-picking from your private branch because\r
+        the information is useless to the recipient.  If on the\r
         other hand you are cherry-picking between two publicly\r
         visible branches (e.g. backporting a fix to a\r
         maintenance branch for an older release from a\r
@@ -362,7 +363,7 @@ effect to your working tree in a row.</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 19-Jul-2007 02:09:33 UTC\r
+Last updated 23-Oct-2007 01:21:45 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 47b1e8c2fcd567b7e9d673f2d3ff30c9c32a1b83..76a2edfd9b3665b4dbe8e3837c06737e7c5fd232 100644 (file)
@@ -27,11 +27,12 @@ OPTIONS
        message prior committing.
 
 -x::
-       Cause the command to append which commit was
-       cherry-picked after the original commit message when
-       making a commit.  Do not use this option if you are
-       cherry-picking from your private branch because the
-       information is useless to the recipient.  If on the
+       When recording the commit, append to the original commit
+       message a note that indicates which commit this change
+       was cherry-picked from.  Append the note only for cherry
+       picks without conflicts.  Do not use this option if
+       you are cherry-picking from your private branch because
+       the information is useless to the recipient.  If on the
        other hand you are cherry-picking between two publicly
        visible branches (e.g. backporting a fix to a
        maintenance branch for an older release from a
index 770de75d32546e87650bb12ecd0f185e589734e5..f9d4240126a5901832b88742ef68856b8f8c91b8 100644 (file)
@@ -889,7 +889,7 @@ core.worktree
         Set the path to the working tree.  The value will not be\r
         used in combination with repositories found automatically in\r
         a .git directory (i.e. $GIT_DIR is not set).\r
-        This can be overriden by the GIT_WORK_TREE environment\r
+        This can be overridden by the GIT_WORK_TREE environment\r
         variable and the <em>--work-tree</em> command line option.\r
 </p>\r
 </dd>\r
@@ -1609,7 +1609,7 @@ merge.verbosity
         message if conflicts were detected. Level 1 outputs only\r
         conflicts, 2 outputs conflicts and file changes.  Level 5 and\r
         above outputs debugging information.  The default is level 2.\r
-        Can be overriden by <em>GIT_MERGE_VERBOSITY</em> environment variable.\r
+        Can be overridden by <em>GIT_MERGE_VERBOSITY</em> environment variable.\r
 </p>\r
 </dd>\r
 <dt>\r
@@ -1941,7 +1941,7 @@ transfer.unpackLimit
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 03-Oct-2007 12:03:44 UTC\r
+Last updated 23-Oct-2007 01:21:46 UTC\r
 </div>\r
 </div>\r
 </body>\r
index f03cc5c7bf6eee4d6dddcac382ba96abf95790d0..57ac59bd95076e46df329ea4f5896b5d29ad4ec2 100644 (file)
@@ -873,7 +873,7 @@ Same as above.
 </li>\r
 <li>\r
 <p>\r
-Changes that occured on the master branch since when the topic\r
+Changes that occurred on the master branch since when the topic\r
 branch was started off it.\r
 </p>\r
 </li>\r
@@ -948,7 +948,7 @@ Output diff in reverse.
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 03-Oct-2007 12:03:48 UTC\r
+Last updated 23-Oct-2007 01:21:46 UTC\r
 </div>\r
 </div>\r
 </body>\r
index db2eb46a191ecafac09492b95ec6f3a3233dbc6e..ce0f5024687056b696fe5e77362a6f01b18dd0bd 100644 (file)
@@ -125,7 +125,7 @@ $ git diff topic...master  <3>
 +
 <1> Changes between the tips of the topic and the master branches.
 <2> Same as above.
-<3> Changes that occured on the master branch since when the topic
+<3> Changes that occurred on the master branch since when the topic
 branch was started off it.
 
 Limiting the diff output::
index 0a2d811c5d25dd506132c9770c1f1b9cfae980fe..11fcd821ce8344306a9aba202a710403c6a91733 100644 (file)
@@ -489,8 +489,7 @@ or copyright violation) from all commits:</p>
 <div class="content">\r
 <pre><tt>git filter-branch --index-filter 'git update-index --remove filename' HEAD</tt></pre>\r
 </div></div>\r
-<p>Now, you will get the rewritten history saved in the branch <em>newbranch</em>\r
-(your current branch is left untouched).</p>\r
+<p>Now, you will get the rewritten history saved in HEAD.</p>\r
 <p>To set a commit (which typically is at the tip of another\r
 history) to be the parent of the current initial commit, in\r
 order to paste the other history behind the current history:</p>\r
@@ -594,7 +593,7 @@ and the git list &lt;git@vger.kernel.org&gt;</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 14-Sep-2007 10:06:09 UTC\r
+Last updated 23-Oct-2007 01:21:48 UTC\r
 </div>\r
 </div>\r
 </body>\r
index c878ed395eb27de02efda2e3018ae76fbb799c7b..ba9b4fbca79321003f8cda6341d066f9ccc00349 100644 (file)
@@ -180,8 +180,7 @@ A significantly faster version:
 git filter-branch --index-filter 'git update-index --remove filename' HEAD
 --------------------------------------------------------------------------
 
-Now, you will get the rewritten history saved in the branch 'newbranch'
-(your current branch is left untouched).
+Now, you will get the rewritten history saved in HEAD.
 
 To set a commit (which typically is at the tip of another
 history) to be the parent of the current initial commit, in
index 4f2ef4b194eefd3e8ac0173c954a3756fc06ead9..8f1ed4cba4f5942e4908365a233d28319559f054 100644 (file)
@@ -282,7 +282,8 @@ performance) and removing unreachable objects which may have been
 created from prior invocations of <a href="git-add.html">git-add(1)</a>.</p>\r
 <p>Users are encouraged to run this task on a regular basis within\r
 each repository to maintain good disk space utilization and good\r
-operating performance.</p>\r
+operating performance. Some git commands may automatically run\r
+<tt>git-gc</tt>; see the <tt>--auto</tt> flag below for details.</p>\r
 </div>\r
 <h2>OPTIONS</h2>\r
 <div class="sectionbody">\r
@@ -321,19 +322,22 @@ operating performance.</p>
 </dt>\r
 <dd>\r
 <p>\r
-        With this option, <tt>git gc</tt> checks if there are too many\r
-        loose objects in the repository and runs\r
-        <a href="git-repack.html">git-repack(1)</a> with <tt>-d -l</tt> option to pack them.\r
-        The threshold for loose objects is set with <tt>gc.auto</tt> configuration\r
-        variable, and can be disabled by setting it to 0.  Some\r
-        Porcelain commands use this after they perform operation\r
-        that could create many loose objects automatically.\r
-        Additionally, when there are too many packs are present,\r
-        they are consolidated into one larger pack by running\r
-        the <tt>git-repack</tt> command with <tt>-A</tt> option.  The\r
-        threshold for number of packs is set with\r
-        <tt>gc.autopacklimit</tt> configuration variable.\r
+        With this option, <tt>git gc</tt> checks whether any housekeeping is\r
+        required; if not, it exits without performing any work.\r
+        Some git commands run <tt>git gc --auto</tt> after performing\r
+        operations that could create many loose objects.\r
 </p>\r
+<p>Housekeeping is required if there are too many loose objects or\r
+too many packs in the repository. If the number of loose objects\r
+exceeds the value of the <tt>gc.auto</tt> configuration variable, then\r
+all loose objects are combined into a single pack using\r
+<tt>git-repack -d -l</tt>.  Setting the value of <tt>gc.auto</tt> to 0\r
+disables automatic packing of loose objects.</p>\r
+<p>If the number of packs exceeds the value of <tt>gc.autopacklimit</tt>,\r
+then existing packs (except those marked with a <tt>.keep</tt> file)\r
+are consolidated into a single pack by using the <tt>-A</tt> option of\r
+<tt>git-repack</tt>. Setting <tt>gc.autopacklimit</tt> to 0 disables\r
+automatic consolidation of packs.</p>\r
 </dd>\r
 </dl>\r
 </div>\r
@@ -386,7 +390,7 @@ more details.  This defaults to 10.</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 03-Oct-2007 12:03:49 UTC\r
+Last updated 23-Oct-2007 01:21:49 UTC\r
 </div>\r
 </div>\r
 </body>\r
index b9d5660eacee03bde2360b97b80f3378972fe678..872056ea040f1f4953b538aaa4a14ded4d2170a9 100644 (file)
@@ -19,7 +19,8 @@ created from prior invocations of gitlink:git-add[1].
 
 Users are encouraged to run this task on a regular basis within
 each repository to maintain good disk space utilization and good
-operating performance.
+operating performance. Some git commands may automatically run
+`git-gc`; see the `--auto` flag below for details.
 
 OPTIONS
 -------
@@ -44,18 +45,23 @@ OPTIONS
        few hundred changesets or so.
 
 --auto::
-       With this option, `git gc` checks if there are too many
-       loose objects in the repository and runs
-       gitlink:git-repack[1] with `-d -l` option to pack them.
-       The threshold for loose objects is set with `gc.auto` configuration
-       variable, and can be disabled by setting it to 0.  Some
-       Porcelain commands use this after they perform operation
-       that could create many loose objects automatically.
-       Additionally, when there are too many packs are present,
-       they are consolidated into one larger pack by running
-       the `git-repack` command with `-A` option.  The
-       threshold for number of packs is set with
-       `gc.autopacklimit` configuration variable.
+       With this option, `git gc` checks whether any housekeeping is
+       required; if not, it exits without performing any work.
+       Some git commands run `git gc --auto` after performing
+       operations that could create many loose objects.
++
+Housekeeping is required if there are too many loose objects or
+too many packs in the repository. If the number of loose objects
+exceeds the value of the `gc.auto` configuration variable, then
+all loose objects are combined into a single pack using
+`git-repack -d -l`.  Setting the value of `gc.auto` to 0
+disables automatic packing of loose objects.
++
+If the number of packs exceeds the value of `gc.autopacklimit`,
+then existing packs (except those marked with a `.keep` file)
+are consolidated into a single pack by using the `-A` option of
+`git-repack`. Setting `gc.autopacklimit` to 0 disables
+automatic consolidation of packs.
 
 Configuration
 -------------
index b553a024bb976f008e137ca135e65a4c229b6b6c..ab1fcebe0bdb4760a933a1ea40fe9bfd96cf3a4f 100644 (file)
@@ -320,7 +320,7 @@ objects/pack/ directory of a git repository.</p>
         a default name determined from the pack content.  If\r
         &lt;pack-file&gt; is not specified consider using --keep to\r
         prevent a race condition between this process and\r
-        <a href=":git-repack.html">:git-repack(1)</a> .\r
+        <a href=":git-repack.html">:git-repack(1)</a>.\r
 </p>\r
 </dd>\r
 <dt>\r
@@ -398,7 +398,7 @@ mentioned above.</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 19-Jul-2007 02:09:43 UTC\r
+Last updated 23-Oct-2007 01:21:49 UTC\r
 </div>\r
 </div>\r
 </body>\r
index a8a7f6f04bf5b95a5b325dc2df0adf9d94532bc5..bf5c2bddf422c87768026ea8cae4146a136b3656 100644 (file)
@@ -43,7 +43,7 @@ OPTIONS
        a default name determined from the pack content.  If
        <pack-file> is not specified consider using --keep to
        prevent a race condition between this process and
-       gitlink::git-repack[1] .
+       gitlink::git-repack[1].
 
 --fix-thin::
        It is possible for gitlink:git-pack-objects[1] to build
index ed5b4117f56b3a6bf569569f0f38055e111407c6..ef8c51abe9b98b47b1c1091f00a79ea807ce68b5 100644 (file)
@@ -301,7 +301,7 @@ repository.</p>
         The HTTP daemon command-line that will be executed.\r
         Command-line options may be specified here, and the\r
         configuration file will be added at the end of the command-line.\r
-        Currently, lighttpd and apache2 are the only supported servers.\r
+        Currently lighttpd, apache2 and webrick are supported.\r
         (Default: lighttpd)\r
 </p>\r
 </dd>\r
@@ -390,7 +390,7 @@ repository.</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 19-Jul-2007 02:09:44 UTC\r
+Last updated 23-Oct-2007 01:21:50 UTC\r
 </div>\r
 </div>\r
 </body>\r
index cec60ee78075aa4411cd637aece93fc38080b0c5..735008c1ab172cda93e6f98b75b401c37f1cd22f 100644 (file)
@@ -27,7 +27,7 @@ OPTIONS
        The HTTP daemon command-line that will be executed.
        Command-line options may be specified here, and the
        configuration file will be added at the end of the command-line.
-       Currently, lighttpd and apache2 are the only supported servers.
+       Currently lighttpd, apache2 and webrick are supported.
        (Default: lighttpd)
 
 -m|--module-path::
index 1dbcc2f8d73c5e7740160142f5b67103c31ccea5..ab6549c030785f1503a052521793e281edc3b91b 100644 (file)
@@ -325,7 +325,7 @@ files are passed as arguments 5, 6 and 7.</p>
 <p>If "git-merge-index" is called with multiple &lt;file&gt;s (or -a) then it\r
 processes them in turn only stopping if merge returns a non-zero exit\r
 code.</p>\r
-<p>Typically this is run with the a script calling git's imitation of\r
+<p>Typically this is run with a script calling git's imitation of\r
 the merge command from the RCS package.</p>\r
 <p>A sample script called "git-merge-one-file" is included in the\r
 distribution.</p>\r
@@ -372,7 +372,7 @@ One-shot merge by Petr Baudis &lt;pasky@ucw.cz&gt;</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 19-Jul-2007 02:09:46 UTC\r
+Last updated 23-Oct-2007 01:21:51 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 17e9f10c659844e55e56b0d3a005e5f250f43c20..b726ddfe125f54986dad4c0f19c53d657de082b5 100644 (file)
@@ -40,7 +40,7 @@ If "git-merge-index" is called with multiple <file>s (or -a) then it
 processes them in turn only stopping if merge returns a non-zero exit
 code.
 
-Typically this is run with the a script calling git's imitation of
+Typically this is run with a script calling git's imitation of
 the merge command from the RCS package.
 
 A sample script called "git-merge-one-file" is included in the
index dacd375473ac6275ff355874830300e862410db3..8701f653d3f0f301b48be7a48b32fd7a478ed224 100644 (file)
@@ -273,7 +273,7 @@ git-push(1) Manual Page
 <h2>SYNOPSIS</h2>\r
 <div class="sectionbody">\r
 <div class="verseblock">\r
-<div class="content"><em>git-push</em> [--all] [--tags] [--receive-pack=&lt;git-receive-pack&gt;]\r
+<div class="content"><em>git-push</em> [--all] [--dry-run] [--tags] [--receive-pack=&lt;git-receive-pack&gt;]\r
            [--repo=all] [-f | --force] [-v] [&lt;repository&gt; &lt;refspec&gt;&#8230;]</div></div>\r
 </div>\r
 <h2>DESCRIPTION</h2>\r
@@ -335,6 +335,14 @@ the remote repository.</p>
 </p>\r
 </dd>\r
 <dt>\r
+--dry-run\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do everything except actually send the updates.\r
+</p>\r
+</dd>\r
+<dt>\r
 --tags\r
 </dt>\r
 <dd>\r
@@ -613,7 +621,7 @@ by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 19-Sep-2007 02:27:19 UTC\r
+Last updated 23-Oct-2007 01:21:51 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 6bc559ddd80e2fa8b3f4fdf57fa4f5ce14eb53af..e5dd4c10662230622299d0a4b2bb2850071be7d8 100644 (file)
@@ -9,7 +9,7 @@ git-push - Update remote refs along with associated objects
 SYNOPSIS
 --------
 [verse]
-'git-push' [--all] [--tags] [--receive-pack=<git-receive-pack>]
+'git-push' [--all] [--dry-run] [--tags] [--receive-pack=<git-receive-pack>]
            [--repo=all] [-f | --force] [-v] [<repository> <refspec>...]
 
 DESCRIPTION
@@ -63,6 +63,9 @@ the remote repository.
        Instead of naming each ref to push, specifies that all
        refs under `$GIT_DIR/refs/heads/` be pushed.
 
+\--dry-run::
+       Do everything except actually send the updates.
+
 \--tags::
        All refs under `$GIT_DIR/refs/tags` are pushed, in
        addition to refspecs explicitly listed on the command
index 09f87b8eb51d9afeed5346635f4e04390916e5be..d746f3091c138a4ebc5466029e3d0278f2481aa7 100644 (file)
@@ -290,7 +290,10 @@ of commits that would be shown by <tt>git log &lt;upstream&gt;..HEAD</tt>.</p>
 --onto option was supplied.  This has the exact same effect as\r
 <tt>git reset --hard &lt;upstream&gt;</tt> (or &lt;newbase&gt;).</p>\r
 <p>The commits that were previously saved into the temporary area are\r
-then reapplied to the current branch, one by one, in order.</p>\r
+then reapplied to the current branch, one by one, in order. Note that\r
+any commits in HEAD which introduce the same textual changes as a commit\r
+in HEAD..&lt;upstream&gt; are omitted (i.e., a patch already accepted upstream\r
+with a different commit message or timestamp will be skipped).</p>\r
 <p>It is possible that a merge failure will prevent this process from being\r
 completely automatic.  You will have to resolve any such merge failure\r
 and run <tt>git rebase --continue</tt>.  Another option is to bypass the commit\r
@@ -319,6 +322,24 @@ git-rebase master topic</tt></pre>
 </div></div>\r
 <p>The latter form is just a short-hand of <tt>git checkout topic</tt>\r
 followed by <tt>git rebase master</tt>.</p>\r
+<p>If the upstream branch already contains a change you have made (e.g.,\r
+because you mailed a patch which was applied upstream), then that commit\r
+will be skipped. For example, running <tt>git-rebase master</tt> on the\r
+following history (in which A' and A introduce the same set of changes,\r
+but have different committer information):</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>          A---B---C topic\r
+         /\r
+    D---E---A'---F master</tt></pre>\r
+</div></div>\r
+<p>will result in:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>                   B'---C' topic\r
+                  /\r
+    D---E---A'---F master</tt></pre>\r
+</div></div>\r
 <p>Here is how you would transplant a topic branch based on one\r
 branch to another, to pretend that you forked the topic branch\r
 from the latter branch, using <tt>rebase --onto</tt>.</p>\r
@@ -810,7 +831,7 @@ Johannes E. Schindelin &lt;johannes.schindelin@gmx.de&gt;</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 30-Sep-2007 08:10:55 UTC\r
+Last updated 23-Oct-2007 01:21:54 UTC\r
 </div>\r
 </div>\r
 </body>\r
index e8e75790fc21b403f428b8cca72ab42a072e1b38..e4326d3322d45fafbc03ff96a696efc092c12522 100644 (file)
@@ -28,7 +28,10 @@ The current branch is reset to <upstream>, or <newbase> if the
 `git reset --hard <upstream>` (or <newbase>).
 
 The commits that were previously saved into the temporary area are
-then reapplied to the current branch, one by one, in order.
+then reapplied to the current branch, one by one, in order. Note that
+any commits in HEAD which introduce the same textual changes as a commit
+in HEAD..<upstream> are omitted (i.e., a patch already accepted upstream
+with a different commit message or timestamp will be skipped).
 
 It is possible that a merge failure will prevent this process from being
 completely automatic.  You will have to resolve any such merge failure
@@ -62,6 +65,26 @@ would be:
 The latter form is just a short-hand of `git checkout topic`
 followed by `git rebase master`.
 
+If the upstream branch already contains a change you have made (e.g.,
+because you mailed a patch which was applied upstream), then that commit
+will be skipped. For example, running `git-rebase master` on the
+following history (in which A' and A introduce the same set of changes,
+but have different committer information):
+
+------------
+          A---B---C topic
+         /
+    D---E---A'---F master
+------------
+
+will result in:
+
+------------
+                   B'---C' topic
+                  /
+    D---E---A'---F master
+------------
+
 Here is how you would transplant a topic branch based on one
 branch to another, to pretend that you forked the topic branch
 from the latter branch, using `rebase --onto`.
index aae9ca781b0401bedea62181cb8eeec2d5d11695..8c0db1b1e1928c20eb2963b7875094384a5a0188 100644 (file)
@@ -279,7 +279,7 @@ git-reflog(1) Manual Page
 <p>The command takes various subcommands, and different options\r
 depending on the subcommand:</p>\r
 <div class="verseblock">\r
-<div class="content">git reflog expire [--dry-run] [--stale-fix]\r
+<div class="content">git reflog expire [--dry-run] [--stale-fix] [--verbose]\r
         [--expire=&lt;time&gt;] [--expire-unreachable=&lt;time&gt;] [--all] &lt;refs&gt;&#8230;</div></div>\r
 <p>git reflog [show] [log-options]</p>\r
 <p>Reflog is a mechanism to record when the tip of branches are\r
@@ -345,6 +345,14 @@ them.</p>
         Instead of listing &lt;refs&gt; explicitly, prune all refs.\r
 </p>\r
 </dd>\r
+<dt>\r
+--verbose\r
+</dt>\r
+<dd>\r
+<p>\r
+        Print extra information on screen.\r
+</p>\r
+</dd>\r
 </dl>\r
 </div>\r
 <h2>Author</h2>\r
@@ -361,7 +369,7 @@ them.</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 25-Aug-2007 03:53:12 UTC\r
+Last updated 23-Oct-2007 01:21:56 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 5180f6810d8e789f7d677aab0ad37bae93e72cca..5c7316ceb82fbedc1413dfd8a4b1d8095b4d7a06 100644 (file)
@@ -16,7 +16,7 @@ The command takes various subcommands, and different options
 depending on the subcommand:
 
 [verse]
-git reflog expire [--dry-run] [--stale-fix]
+git reflog expire [--dry-run] [--stale-fix] [--verbose]
        [--expire=<time>] [--expire-unreachable=<time>] [--all] <refs>...
 
 git reflog [show] [log-options]
@@ -68,6 +68,9 @@ them.
 --all::
        Instead of listing <refs> explicitly, prune all refs.
 
+--verbose::
+       Print extra information on screen.
+
 Author
 ------
 Written by Junio C Hamano <junkio@cox.net>
index de616709be361f9612852eeb1a71012aa9407130..c61d22bd639f43337ad2384cab0072ad04775e00 100644 (file)
@@ -272,7 +272,7 @@ git-send-pack(1) Manual Page
 </div>\r
 <h2>SYNOPSIS</h2>\r
 <div class="sectionbody">\r
-<p><em>git-send-pack</em> [--all] [--force] [--receive-pack=&lt;git-receive-pack&gt;] [--verbose] [--thin] [&lt;host&gt;:]&lt;directory&gt; [&lt;ref&gt;&#8230;]</p>\r
+<p><em>git-send-pack</em> [--all] [--dry-run] [--force] [--receive-pack=&lt;git-receive-pack&gt;] [--verbose] [--thin] [&lt;host&gt;:]&lt;directory&gt; [&lt;ref&gt;&#8230;]</p>\r
 </div>\r
 <h2>DESCRIPTION</h2>\r
 <div class="sectionbody">\r
@@ -313,6 +313,14 @@ updates it from the current repository, sending named refs.</p>
 </p>\r
 </dd>\r
 <dt>\r
+--dry-run\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do everything except actually send the updates.\r
+</p>\r
+</dd>\r
+<dt>\r
 --force\r
 </dt>\r
 <dd>\r
@@ -443,7 +451,7 @@ to disable the fast-forward check only on that ref.</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 19-Sep-2007 02:27:20 UTC\r
+Last updated 23-Oct-2007 01:21:57 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 3271e88183e2b4c8551bb48caff54d3223991f79..2fa01d4a3ca92ed3a3896e4df416cf8f3933c885 100644 (file)
@@ -8,7 +8,7 @@ git-send-pack - Push objects over git protocol to another repository
 
 SYNOPSIS
 --------
-'git-send-pack' [--all] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...]
+'git-send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...]
 
 DESCRIPTION
 -----------
@@ -34,6 +34,9 @@ OPTIONS
        Instead of explicitly specifying which refs to update,
        update all heads that locally exist.
 
+\--dry-run::
+       Do everything except actually send the updates.
+
 \--force::
        Usually, the command refuses to update a remote ref that
        is not an ancestor of the local ref used to overwrite it.
index 7c27cc9092940c53a1acf416dca26470cf80c0b8..ecb21c1df8f00f8b988e1b7ef24b3fbf1885bda6 100644 (file)
@@ -330,7 +330,7 @@ show [&lt;stash&gt;]
 </dt>\r
 <dd>\r
 <p>\r
-        Show the changes recorded in the stash as a diff between the the\r
+        Show the changes recorded in the stash as a diff between the\r
         stashed state and its original parent. When no <tt>&lt;stash&gt;</tt> is given,\r
         shows the latest one. By default, the command shows the diffstat, but\r
         it will accept any format known to <tt>git-diff</tt> (e.g., <tt>git-stash show\r
@@ -460,7 +460,7 @@ $ git stash apply
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 01-Oct-2007 16:22:45 UTC\r
+Last updated 23-Oct-2007 01:21:58 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 5723bb06f087f62e463b110686b850987103140d..c0147b99a2268d884a7c715dcb51571315e39e51 100644 (file)
@@ -57,7 +57,7 @@ stash@{1}: On master: 9cc0589... Add git-stash
 
 show [<stash>]::
 
-       Show the changes recorded in the stash as a diff between the the
+       Show the changes recorded in the stash as a diff between the
        stashed state and its original parent. When no `<stash>` is given,
        shows the latest one. By default, the command shows the diffstat, but
        it will accept any format known to `git-diff` (e.g., `git-stash show
index ba0872d871d69012d502b4476bdd2f8f18d60f0d..d0b9c852c54b39a78ffe198d484f86fb64ca957d 100644 (file)
@@ -906,7 +906,7 @@ section because they affect the <em>git-svn-id:</em> metadata line.</p>
 </div>\r
 <h2>BASIC EXAMPLES</h2>\r
 <div class="sectionbody">\r
-<p>Tracking and contributing to the trunk of a Subversion-managed project:</p>\r
+<p>Tracking and contributing to the trunk of a Subversion-managed project:</p>\r
 <div class="listingblock">\r
 <div class="content">\r
 <pre><tt># Clone a repo (like git clone):\r
@@ -1060,7 +1060,7 @@ should be manually entered with a text-editor or using
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 19-Sep-2007 02:27:20 UTC\r
+Last updated 23-Oct-2007 01:22:01 UTC\r
 </div>\r
 </div>\r
 </body>\r
index e157c6ab501a574b929bd73c427313874c3a3e90..488e4b1caf8097de4ab53bf89a03f80173a2cf52 100644 (file)
@@ -404,7 +404,7 @@ section because they affect the 'git-svn-id:' metadata line.
 BASIC EXAMPLES
 --------------
 
-Tracking and contributing to the trunk of a Subversion-managed project:
+Tracking and contributing to the trunk of a Subversion-managed project:
 
 ------------------------------------------------------------------------
 # Clone a repo (like git clone):
index 8219451671c1b71b8c5dd1cf55455aa7474ca98c..fabdaea0859ec52847bf455af17771cefca49867 100644 (file)
@@ -426,7 +426,7 @@ again, as if you hadn't already published the old one.
 </p>\r
 </li>\r
 </ol>\r
-<p>However, Git does <strong>not</strong> (and it should not)change tags behind\r
+<p>However, Git does <strong>not</strong> (and it should not) change tags behind\r
 users back. So if somebody already got the old tag, doing a "git\r
 pull" on your tree shouldn't just make them overwrite the old\r
 one.</p>\r
@@ -513,6 +513,21 @@ exchange the tags internal to their group, but in that workflow
 they are most likely tracking with each other's progress by\r
 having tracking branches.  Again, the heuristic to automatically\r
 follow such tags is a good thing.</p>\r
+<h3>On Backdating Tags</h3>\r
+<p>If you have imported some changes from another VCS and would like\r
+to add tags for major releases of your work, it is useful to be able\r
+to specify the date to embed inside of the tag object.  The data in\r
+the tag object affects, for example, the ordering of tags in the\r
+gitweb interface.</p>\r
+<p>To set the date used in future tag objects, set the environment\r
+variable GIT_AUTHOR_DATE to one or more of the date and time.  The\r
+date and time can be specified in a number of ways; the most common\r
+is "YYYY-MM-DD HH:MM".</p>\r
+<p>An example follows.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ GIT_AUTHOR_DATE="2006-10-02 10:31" git tag -s v1.0.1</tt></pre>\r
+</div></div>\r
 </div>\r
 <h2>Author</h2>\r
 <div class="sectionbody">\r
@@ -529,7 +544,7 @@ Junio C Hamano &lt;junkio@cox.net&gt; and Chris Wright &lt;chrisw@osdl.org&gt;.<
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 28-Aug-2007 06:25:09 UTC\r
+Last updated 23-Oct-2007 01:22:00 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 990ae4f948920477500b6a19a2350a61cbd7c3cd..10d3e3fa950e00b6004f968ff2c41477e1d57612 100644 (file)
@@ -112,7 +112,7 @@ You really want to call the new version "X" too, 'even though'
 others have already seen the old one. So just use "git tag -f"
 again, as if you hadn't already published the old one.
 
-However, Git does *not* (and it should not)change tags behind
+However, Git does *not* (and it should not) change tags behind
 users back. So if somebody already got the old tag, doing a "git
 pull" on your tree shouldn't just make them overwrite the old
 one.
@@ -214,6 +214,27 @@ having tracking branches.  Again, the heuristic to automatically
 follow such tags is a good thing.
 
 
+On Backdating Tags
+~~~~~~~~~~~~~~~~~~
+
+If you have imported some changes from another VCS and would like
+to add tags for major releases of your work, it is useful to be able
+to specify the date to embed inside of the tag object.  The data in
+the tag object affects, for example, the ordering of tags in the
+gitweb interface.
+
+To set the date used in future tag objects, set the environment
+variable GIT_AUTHOR_DATE to one or more of the date and time.  The
+date and time can be specified in a number of ways; the most common
+is "YYYY-MM-DD HH:MM".
+
+An example follows.
+
+------------
+$ GIT_AUTHOR_DATE="2006-10-02 10:31" git tag -s v1.0.1
+------------
+
+
 Author
 ------
 Written by Linus Torvalds <torvalds@osdl.org>,
index 39c1aa9395e89e85acf66fafca962bbba51f77a4..927159d98f442fe4a5c188b02281968e3c3c908d 100644 (file)
--- a/git.html
+++ b/git.html
@@ -1633,14 +1633,14 @@ HEAD
 </div>\r
 <h2>File/Directory Structure</h2>\r
 <div class="sectionbody">\r
-<p>Please see <a href="repository-layout.html">repository layout</a> document.</p>\r
+<p>Please see the <a href="repository-layout.html">repository layout</a> document.</p>\r
 <p>Read <a href="hooks.html">hooks</a> for more details about each hook.</p>\r
 <p>Higher level SCMs may provide and manage additional information in the\r
 <tt>$GIT_DIR</tt>.</p>\r
 </div>\r
 <h2>Terminology</h2>\r
 <div class="sectionbody">\r
-<p>Please see <a href="glossary.html">glossary</a> document.</p>\r
+<p>Please see the <a href="glossary.html">glossary</a> document.</p>\r
 </div>\r
 <h2>Environment Variables</h2>\r
 <div class="sectionbody">\r
@@ -1957,7 +1957,7 @@ contributors on the git-list &lt;git@vger.kernel.org&gt;.</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 04-Oct-2007 13:06:19 UTC\r
+Last updated 23-Oct-2007 01:22:09 UTC\r
 </div>\r
 </div>\r
 </body>\r
diff --git a/git.txt b/git.txt
index 1c0ee078e64b20622727d223ae27c24d835b3d31..ce8f923a156ad0e33b15b5ef169887b49d5100ad 100644 (file)
--- a/git.txt
+++ b/git.txt
@@ -326,7 +326,7 @@ For a more complete list of ways to spell object names, see
 File/Directory Structure
 ------------------------
 
-Please see link:repository-layout.html[repository layout] document.
+Please see the link:repository-layout.html[repository layout] document.
 
 Read link:hooks.html[hooks] for more details about each hook.
 
@@ -336,7 +336,7 @@ Higher level SCMs may provide and manage additional information in the
 
 Terminology
 -----------
-Please see link:glossary.html[glossary] document.
+Please see the link:glossary.html[glossary] document.
 
 
 Environment Variables
index 82c6ec6f049521719c694fcaf9d12e3afd3a8a38..178f10d458fb8355512649842791b0ed71263503 100644 (file)
--- a/gitk.html
+++ b/gitk.html
@@ -369,7 +369,7 @@ gitk --since="2 weeks ago" -- gitk
 </p>\r
 </dd>\r
 <dt>\r
-gitk --max-count=100 --all &#8212; Makefile\r
+gitk --max-count=100 --all -- Makefile\r
 </dt>\r
 <dd>\r
 <p>\r
@@ -425,7 +425,7 @@ gitk --max-count=100 --all &#8212; Makefile
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 19-Jul-2007 02:10:00 UTC\r
+Last updated 23-Oct-2007 01:22:03 UTC\r
 </div>\r
 </div>\r
 </body>\r
index e9f82b97b91b92785b76a224e176b695593cdbe7..8dbfb0d5a3ef015367e990f7c24d2a47b176fde4 100644 (file)
--- a/gitk.txt
+++ b/gitk.txt
@@ -69,7 +69,7 @@ gitk --since="2 weeks ago" \-- gitk::
        The "--" is necessary to avoid confusion with the *branch* named
        'gitk'
 
-gitk --max-count=100 --all -- Makefile::
+gitk --max-count=100 --all \-- Makefile::
 
        Show at most 100 changes made to the file 'Makefile'. Instead of only
        looking for changes in the current branch look in all branches.
index d76972b2f9e5bae92ad5cd3f2167143367de2427..359062a4b94367f6831a678cc452e07743d1e8b6 100644 (file)
@@ -359,8 +359,8 @@ div.exampleblock-content {
 <p>\r
         In <a href="#def_SCM">SCM</a> jargon, "cherry pick" means to choose a subset of\r
         changes out of a series of changes (typically commits) and record them\r
-        as a new series of changes on top of different codebase. In GIT, this is\r
-        performed by "git cherry-pick" command to extract the change introduced\r
+        as a new series of changes on top of different codebase. In GIT, this is\r
+        performed by the "git cherry-pick" command to extract the change introduced\r
         by an existing <a href="#def_commit">commit</a> and to record it based on the tip\r
         of the current <a href="#def_branch">branch</a> as a new commit.\r
 </p>\r
@@ -770,7 +770,7 @@ This commit is referred to as a "merge commit", or sometimes just a
 <p>\r
         The term <a href="#def_pickaxe">pickaxe</a> refers to an option to the diffcore\r
         routines that help select changes that add or delete a given text\r
-        string. With the &#8212;pickaxe-all option, it can be used to view the full\r
+        string. With the <tt>&#8212;pickaxe-all</tt> option, it can be used to view the full\r
         <a href="#def_changeset">changeset</a> that introduced or removed, say, a\r
         particular line of text. See <a href="git-diff.html">git-diff(1)</a>.\r
 </p>\r
@@ -810,8 +810,8 @@ This commit is referred to as a "merge commit", or sometimes just a
 <p>\r
         Pushing a <a href="#def_branch">branch</a> means to get the branch's\r
         <a href="#def_head_ref">head ref</a> from a remote <a href="#def_repository">repository</a>,\r
-        find out if it is an ancestor to the branch's local\r
-        head ref is a direct, and in that case, putting all\r
+        find out if it is a direct ancestor to the branch's local\r
+        head ref, and in that case, putting all\r
         objects, which are <a href="#def_reachable">reachable</a> from the local\r
         head ref, and which are missing from the remote\r
         repository, into the remote\r
@@ -881,7 +881,7 @@ This commit is referred to as a "merge commit", or sometimes just a
         it as my origin branch head". And <tt>git push\r
         $URL refs/heads/master:refs/heads/to-upstream</tt> means "publish my\r
         master branch head as to-upstream branch at $URL". See also\r
-        <a href="git-push.html">git-push(1)</a>\r
+        <a href="git-push.html">git-push(1)</a>.\r
 </p>\r
 </dd>\r
 <dt>\r
@@ -1080,7 +1080,7 @@ This commit is referred to as a "merge commit", or sometimes just a
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 19-Jul-2007 02:10:10 UTC\r
+Last updated 23-Oct-2007 01:22:08 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 3f7b1e42b502e1cc87305167ffcb99486132caca..fc1874424e26a2f95574d72bf3fc1c71a3b1a1b6 100644 (file)
@@ -52,8 +52,8 @@ GIT Glossary
 [[def_cherry-picking]]cherry-picking::
        In <<def_SCM,SCM>> jargon, "cherry pick" means to choose a subset of
        changes out of a series of changes (typically commits) and record them
-       as a new series of changes on top of different codebase. In GIT, this is
-       performed by "git cherry-pick" command to extract the change introduced
+       as a new series of changes on top of different codebase. In GIT, this is
+       performed by the "git cherry-pick" command to extract the change introduced
        by an existing <<def_commit,commit>> and to record it based on the tip
        of the current <<def_branch,branch>> as a new commit.
 
@@ -281,7 +281,7 @@ This commit is referred to as a "merge commit", or sometimes just a
 [[def_pickaxe]]pickaxe::
        The term <<def_pickaxe,pickaxe>> refers to an option to the diffcore
        routines that help select changes that add or delete a given text
-       string. With the --pickaxe-all option, it can be used to view the full
+       string. With the `--pickaxe-all` option, it can be used to view the full
        <<def_changeset,changeset>> that introduced or removed, say, a
        particular line of text. See gitlink:git-diff[1].
 
@@ -301,8 +301,8 @@ This commit is referred to as a "merge commit", or sometimes just a
 [[def_push]]push::
        Pushing a <<def_branch,branch>> means to get the branch's
        <<def_head_ref,head ref>> from a remote <<def_repository,repository>>,
-       find out if it is an ancestor to the branch's local
-       head ref is a direct, and in that case, putting all
+       find out if it is a direct ancestor to the branch's local
+       head ref, and in that case, putting all
        objects, which are <<def_reachable,reachable>> from the local
        head ref, and which are missing from the remote
        repository, into the remote
@@ -347,7 +347,7 @@ This commit is referred to as a "merge commit", or sometimes just a
        it as my origin branch head". And `git push
        $URL refs/heads/master:refs/heads/to-upstream` means "publish my
        master branch head as to-upstream branch at $URL". See also
-       gitlink:git-push[1]
+       gitlink:git-push[1].
 
 [[def_repository]]repository::
        A collection of <<def_ref,refs>> together with an
index 0cd9d452f55e157f2c1d8f3795ecd3e2e14d7cb6..ba2206df945314a6aae51823b0bfea3c4ad1c55a 100644 (file)
@@ -1,4 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Git User's Manual (for version 1.5.3 or newer)</title><link rel="stylesheet" href="docbook-xsl.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.69.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id189136"></a>Git User's Manual (for version 1.5.3 or newer)</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="#id264725">Preface</a></span></dt><dt><span class="chapter"><a href="#repositories-and-branches">1. Repositories and Branches</a></span></dt><dd><dl><dt><span class="section"><a href="#how-to-get-a-git-repository">How to get a git repository</a></span></dt><dt><span class="section"><a href="#how-to-check-out">How to check out a different version of a project</a></span></dt><dt><span class="section"><a href="#understanding-commits">Understanding History: Commits</a></span></dt><dd><dl><dt><span class="section"><a href="#understanding-reachability">Understanding history: commits, parents, and reachability</a></span></dt><dt><span class="section"><a href="#history-diagrams">Understanding history: History diagrams</a></span></dt><dt><span class="section"><a href="#what-is-a-branch">Understanding history: What is a branch?</a></span></dt></dl></dd><dt><span class="section"><a href="#manipulating-branches">Manipulating branches</a></span></dt><dt><span class="section"><a href="#detached-head">Examining an old version without creating a new branch</a></span></dt><dt><span class="section"><a href="#examining-remote-branches">Examining branches from a remote repository</a></span></dt><dt><span class="section"><a href="#how-git-stores-references">Naming branches, tags, and other references</a></span></dt><dt><span class="section"><a href="#Updating-a-repository-with-git-fetch">Updating a repository with git fetch</a></span></dt><dt><span class="section"><a href="#fetching-branches">Fetching branches from other repositories</a></span></dt></dl></dd><dt><span class="chapter"><a href="#exploring-git-history">2. Exploring git history</a></span></dt><dd><dl><dt><span class="section"><a href="#using-bisect">How to use bisect to find a regression</a></span></dt><dt><span class="section"><a href="#naming-commits">Naming commits</a></span></dt><dt><span class="section"><a href="#creating-tags">Creating tags</a></span></dt><dt><span class="section"><a href="#browsing-revisions">Browsing revisions</a></span></dt><dt><span class="section"><a href="#generating-diffs">Generating diffs</a></span></dt><dt><span class="section"><a href="#viewing-old-file-versions">Viewing old file versions</a></span></dt><dt><span class="section"><a href="#history-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#counting-commits-on-a-branch">Counting the number of commits on a branch</a></span></dt><dt><span class="section"><a href="#checking-for-equal-branches">Check whether two branches point at the same history</a></span></dt><dt><span class="section"><a href="#finding-tagged-descendants">Find first tagged version including a given fix</a></span></dt><dt><span class="section"><a href="#showing-commits-unique-to-a-branch">Showing commits unique to a given branch</a></span></dt><dt><span class="section"><a href="#making-a-release">Creating a changelog and tarball for a software release</a></span></dt><dt><span class="section"><a href="#Finding-comments-with-given-content">Finding commits referencing a file with given content</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Developing-with-git">3. Developing with git</a></span></dt><dd><dl><dt><span class="section"><a href="#telling-git-your-name">Telling git your name</a></span></dt><dt><span class="section"><a href="#creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#how-to-make-a-commit">How to make a commit</a></span></dt><dt><span class="section"><a href="#creating-good-commit-messages">Creating good commit messages</a></span></dt><dt><span class="section"><a href="#ignoring-files">Ignoring files</a></span></dt><dt><span class="section"><a href="#how-to-merge">How to merge</a></span></dt><dt><span class="section"><a href="#resolving-a-merge">Resolving a merge</a></span></dt><dd><dl><dt><span class="section"><a href="#conflict-resolution">Getting conflict-resolution help during a merge</a></span></dt></dl></dd><dt><span class="section"><a href="#undoing-a-merge">Undoing a merge</a></span></dt><dt><span class="section"><a href="#fast-forwards">Fast-forward merges</a></span></dt><dt><span class="section"><a href="#fixing-mistakes">Fixing mistakes</a></span></dt><dd><dl><dt><span class="section"><a href="#reverting-a-commit">Fixing a mistake with a new commit</a></span></dt><dt><span class="section"><a href="#fixing-a-mistake-by-editing-history">Fixing a mistake by editing history</a></span></dt><dt><span class="section"><a href="#checkout-of-path">Checking out an old version of a file</a></span></dt><dt><span class="section"><a href="#interrupted-work">Temporarily setting aside work in progress</a></span></dt></dl></dd><dt><span class="section"><a href="#ensuring-good-performance">Ensuring good performance</a></span></dt><dt><span class="section"><a href="#ensuring-reliability">Ensuring reliability</a></span></dt><dd><dl><dt><span class="section"><a href="#checking-for-corruption">Checking the repository for corruption</a></span></dt><dt><span class="section"><a href="#recovering-lost-changes">Recovering lost changes</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#sharing-development">4. Sharing development with others</a></span></dt><dd><dl><dt><span class="section"><a href="#getting-updates-with-git-pull">Getting updates with git pull</a></span></dt><dt><span class="section"><a href="#submitting-patches">Submitting patches to a project</a></span></dt><dt><span class="section"><a href="#importing-patches">Importing patches to a project</a></span></dt><dt><span class="section"><a href="#public-repositories">Public git repositories</a></span></dt><dd><dl><dt><span class="section"><a href="#setting-up-a-public-repository">Setting up a public repository</a></span></dt><dt><span class="section"><a href="#exporting-via-git">Exporting a git repository via the git protocol</a></span></dt><dt><span class="section"><a href="#exporting-via-http">Exporting a git repository via http</a></span></dt><dt><span class="section"><a href="#pushing-changes-to-a-public-repository">Pushing changes to a public repository</a></span></dt><dt><span class="section"><a href="#setting-up-a-shared-repository">Setting up a shared repository</a></span></dt><dt><span class="section"><a href="#setting-up-gitweb">Allowing web browsing of a repository</a></span></dt></dl></dd><dt><span class="section"><a href="#sharing-development-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#maintaining-topic-branches">Maintaining topic branches for a Linux subsystem maintainer</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#cleaning-up-history">5. Rewriting history and maintaining patch series</a></span></dt><dd><dl><dt><span class="section"><a href="#patch-series">Creating the perfect patch series</a></span></dt><dt><span class="section"><a href="#using-git-rebase">Keeping a patch series up to date using git-rebase</a></span></dt><dt><span class="section"><a href="#modifying-one-commit">Modifying a single commit</a></span></dt><dt><span class="section"><a href="#reordering-patch-series">Reordering or selecting from a patch series</a></span></dt><dt><span class="section"><a href="#patch-series-tools">Other tools</a></span></dt><dt><span class="section"><a href="#problems-with-rewriting-history">Problems with rewriting history</a></span></dt></dl></dd><dt><span class="chapter"><a href="#advanced-branch-management">6. Advanced branch management</a></span></dt><dd><dl><dt><span class="section"><a href="#fetching-individual-branches">Fetching individual branches</a></span></dt><dt><span class="section"><a href="#fetch-fast-forwards">git fetch and fast-forwards</a></span></dt><dt><span class="section"><a href="#forcing-fetch">Forcing git fetch to do non-fast-forward updates</a></span></dt><dt><span class="section"><a href="#remote-branch-configuration">Configuring remote branches</a></span></dt></dl></dd><dt><span class="chapter"><a href="#git-concepts">7. Git concepts</a></span></dt><dd><dl><dt><span class="section"><a href="#the-object-database">The Object Database</a></span></dt><dd><dl><dt><span class="section"><a href="#commit-object">Commit Object</a></span></dt><dt><span class="section"><a href="#tree-object">Tree Object</a></span></dt><dt><span class="section"><a href="#blob-object">Blob Object</a></span></dt><dt><span class="section"><a href="#trust">Trust</a></span></dt><dt><span class="section"><a href="#tag-object">Tag Object</a></span></dt><dt><span class="section"><a href="#pack-files">How git stores objects efficiently: pack files</a></span></dt><dt><span class="section"><a href="#dangling-objects">Dangling objects</a></span></dt></dl></dd><dt><span class="section"><a href="#the-index">The index</a></span></dt></dl></dd><dt><span class="chapter"><a href="#submodules">8. Submodules</a></span></dt><dd><dl><dt><span class="section"><a href="#id279699">Pitfalls with submodules</a></span></dt></dl></dd><dt><span class="chapter"><a href="#low-level-operations">9. Low-level git operations</a></span></dt><dd><dl><dt><span class="section"><a href="#object-manipulation">Object access and manipulation</a></span></dt><dt><span class="section"><a href="#the-workflow">The Workflow</a></span></dt><dd><dl><dt><span class="section"><a href="#working-directory-to-index">working directory -&gt; index</a></span></dt><dt><span class="section"><a href="#index-to-object-database">index -&gt; object database</a></span></dt><dt><span class="section"><a href="#object-database-to-index">object database -&gt; index</a></span></dt><dt><span class="section"><a href="#index-to-working-directory">index -&gt; working directory</a></span></dt><dt><span class="section"><a href="#tying-it-all-together">Tying it all together</a></span></dt></dl></dd><dt><span class="section"><a href="#examining-the-data">Examining the data</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees">Merging multiple trees</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees-2">Merging multiple trees, continued</a></span></dt></dl></dd><dt><span class="chapter"><a href="#hacking-git">10. Hacking git</a></span></dt><dd><dl><dt><span class="section"><a href="#object-details">Object storage format</a></span></dt><dt><span class="section"><a href="#birdview-on-the-source-code">A birds-eye view of Git's source code</a></span></dt></dl></dd><dt><span class="chapter"><a href="#glossary">11. GIT Glossary</a></span></dt><dt><span class="appendix"><a href="#git-quick-start">A. Git Quick Reference</a></span></dt><dd><dl><dt><span class="section"><a href="#quick-creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#managing-branches">Managing branches</a></span></dt><dt><span class="section"><a href="#exploring-history">Exploring history</a></span></dt><dt><span class="section"><a href="#making-changes">Making changes</a></span></dt><dt><span class="section"><a href="#merging">Merging</a></span></dt><dt><span class="section"><a href="#sharing-your-changes">Sharing your changes</a></span></dt><dt><span class="section"><a href="#repository-maintenance">Repository maintenance</a></span></dt></dl></dd><dt><span class="appendix"><a href="#todo">B. Notes and todo list for this manual</a></span></dt></dl></div><div class="preface" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id264725"></a>Preface</h2></div></div></div><p>Git is a fast distributed revision control system.</p><p>This manual is designed to be readable by someone with basic UNIX
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Git User's Manual (for version 1.5.3 or newer)</title><link rel="stylesheet" href="docbook-xsl.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.69.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id189136"></a>Git User's Manual (for version 1.5.3 or newer)</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="#id264725">Preface</a></span></dt><dt><span class="chapter"><a href="#repositories-and-branches">1. Repositories and Branches</a></span></dt><dd><dl><dt><span class="section"><a href="#how-to-get-a-git-repository">How to get a git repository</a></span></dt><dt><span class="section"><a href="#how-to-check-out">How to check out a different version of a project</a></span></dt><dt><span class="section"><a href="#understanding-commits">Understanding History: Commits</a></span></dt><dd><dl><dt><span class="section"><a href="#understanding-reachability">Understanding history: commits, parents, and reachability</a></span></dt><dt><span class="section"><a href="#history-diagrams">Understanding history: History diagrams</a></span></dt><dt><span class="section"><a href="#what-is-a-branch">Understanding history: What is a branch?</a></span></dt></dl></dd><dt><span class="section"><a href="#manipulating-branches">Manipulating branches</a></span></dt><dt><span class="section"><a href="#detached-head">Examining an old version without creating a new branch</a></span></dt><dt><span class="section"><a href="#examining-remote-branches">Examining branches from a remote repository</a></span></dt><dt><span class="section"><a href="#how-git-stores-references">Naming branches, tags, and other references</a></span></dt><dt><span class="section"><a href="#Updating-a-repository-with-git-fetch">Updating a repository with git fetch</a></span></dt><dt><span class="section"><a href="#fetching-branches">Fetching branches from other repositories</a></span></dt></dl></dd><dt><span class="chapter"><a href="#exploring-git-history">2. Exploring git history</a></span></dt><dd><dl><dt><span class="section"><a href="#using-bisect">How to use bisect to find a regression</a></span></dt><dt><span class="section"><a href="#naming-commits">Naming commits</a></span></dt><dt><span class="section"><a href="#creating-tags">Creating tags</a></span></dt><dt><span class="section"><a href="#browsing-revisions">Browsing revisions</a></span></dt><dt><span class="section"><a href="#generating-diffs">Generating diffs</a></span></dt><dt><span class="section"><a href="#viewing-old-file-versions">Viewing old file versions</a></span></dt><dt><span class="section"><a href="#history-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#counting-commits-on-a-branch">Counting the number of commits on a branch</a></span></dt><dt><span class="section"><a href="#checking-for-equal-branches">Check whether two branches point at the same history</a></span></dt><dt><span class="section"><a href="#finding-tagged-descendants">Find first tagged version including a given fix</a></span></dt><dt><span class="section"><a href="#showing-commits-unique-to-a-branch">Showing commits unique to a given branch</a></span></dt><dt><span class="section"><a href="#making-a-release">Creating a changelog and tarball for a software release</a></span></dt><dt><span class="section"><a href="#Finding-comments-with-given-content">Finding commits referencing a file with given content</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Developing-with-git">3. Developing with git</a></span></dt><dd><dl><dt><span class="section"><a href="#telling-git-your-name">Telling git your name</a></span></dt><dt><span class="section"><a href="#creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#how-to-make-a-commit">How to make a commit</a></span></dt><dt><span class="section"><a href="#creating-good-commit-messages">Creating good commit messages</a></span></dt><dt><span class="section"><a href="#ignoring-files">Ignoring files</a></span></dt><dt><span class="section"><a href="#how-to-merge">How to merge</a></span></dt><dt><span class="section"><a href="#resolving-a-merge">Resolving a merge</a></span></dt><dd><dl><dt><span class="section"><a href="#conflict-resolution">Getting conflict-resolution help during a merge</a></span></dt></dl></dd><dt><span class="section"><a href="#undoing-a-merge">Undoing a merge</a></span></dt><dt><span class="section"><a href="#fast-forwards">Fast-forward merges</a></span></dt><dt><span class="section"><a href="#fixing-mistakes">Fixing mistakes</a></span></dt><dd><dl><dt><span class="section"><a href="#reverting-a-commit">Fixing a mistake with a new commit</a></span></dt><dt><span class="section"><a href="#fixing-a-mistake-by-editing-history">Fixing a mistake by editing history</a></span></dt><dt><span class="section"><a href="#checkout-of-path">Checking out an old version of a file</a></span></dt><dt><span class="section"><a href="#interrupted-work">Temporarily setting aside work in progress</a></span></dt></dl></dd><dt><span class="section"><a href="#ensuring-good-performance">Ensuring good performance</a></span></dt><dt><span class="section"><a href="#ensuring-reliability">Ensuring reliability</a></span></dt><dd><dl><dt><span class="section"><a href="#checking-for-corruption">Checking the repository for corruption</a></span></dt><dt><span class="section"><a href="#recovering-lost-changes">Recovering lost changes</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#sharing-development">4. Sharing development with others</a></span></dt><dd><dl><dt><span class="section"><a href="#getting-updates-with-git-pull">Getting updates with git pull</a></span></dt><dt><span class="section"><a href="#submitting-patches">Submitting patches to a project</a></span></dt><dt><span class="section"><a href="#importing-patches">Importing patches to a project</a></span></dt><dt><span class="section"><a href="#public-repositories">Public git repositories</a></span></dt><dd><dl><dt><span class="section"><a href="#setting-up-a-public-repository">Setting up a public repository</a></span></dt><dt><span class="section"><a href="#exporting-via-git">Exporting a git repository via the git protocol</a></span></dt><dt><span class="section"><a href="#exporting-via-http">Exporting a git repository via http</a></span></dt><dt><span class="section"><a href="#pushing-changes-to-a-public-repository">Pushing changes to a public repository</a></span></dt><dt><span class="section"><a href="#setting-up-a-shared-repository">Setting up a shared repository</a></span></dt><dt><span class="section"><a href="#setting-up-gitweb">Allowing web browsing of a repository</a></span></dt></dl></dd><dt><span class="section"><a href="#sharing-development-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#maintaining-topic-branches">Maintaining topic branches for a Linux subsystem maintainer</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#cleaning-up-history">5. Rewriting history and maintaining patch series</a></span></dt><dd><dl><dt><span class="section"><a href="#patch-series">Creating the perfect patch series</a></span></dt><dt><span class="section"><a href="#using-git-rebase">Keeping a patch series up to date using git-rebase</a></span></dt><dt><span class="section"><a href="#modifying-one-commit">Modifying a single commit</a></span></dt><dt><span class="section"><a href="#reordering-patch-series">Reordering or selecting from a patch series</a></span></dt><dt><span class="section"><a href="#patch-series-tools">Other tools</a></span></dt><dt><span class="section"><a href="#problems-with-rewriting-history">Problems with rewriting history</a></span></dt></dl></dd><dt><span class="chapter"><a href="#advanced-branch-management">6. Advanced branch management</a></span></dt><dd><dl><dt><span class="section"><a href="#fetching-individual-branches">Fetching individual branches</a></span></dt><dt><span class="section"><a href="#fetch-fast-forwards">git fetch and fast-forwards</a></span></dt><dt><span class="section"><a href="#forcing-fetch">Forcing git fetch to do non-fast-forward updates</a></span></dt><dt><span class="section"><a href="#remote-branch-configuration">Configuring remote branches</a></span></dt></dl></dd><dt><span class="chapter"><a href="#git-concepts">7. Git concepts</a></span></dt><dd><dl><dt><span class="section"><a href="#the-object-database">The Object Database</a></span></dt><dd><dl><dt><span class="section"><a href="#commit-object">Commit Object</a></span></dt><dt><span class="section"><a href="#tree-object">Tree Object</a></span></dt><dt><span class="section"><a href="#blob-object">Blob Object</a></span></dt><dt><span class="section"><a href="#trust">Trust</a></span></dt><dt><span class="section"><a href="#tag-object">Tag Object</a></span></dt><dt><span class="section"><a href="#pack-files">How git stores objects efficiently: pack files</a></span></dt><dt><span class="section"><a href="#dangling-objects">Dangling objects</a></span></dt></dl></dd><dt><span class="section"><a href="#the-index">The index</a></span></dt></dl></dd><dt><span class="chapter"><a href="#submodules">8. Submodules</a></span></dt><dd><dl><dt><span class="section"><a href="#id279798">Pitfalls with submodules</a></span></dt></dl></dd><dt><span class="chapter"><a href="#low-level-operations">9. Low-level git operations</a></span></dt><dd><dl><dt><span class="section"><a href="#object-manipulation">Object access and manipulation</a></span></dt><dt><span class="section"><a href="#the-workflow">The Workflow</a></span></dt><dd><dl><dt><span class="section"><a href="#working-directory-to-index">working directory -&gt; index</a></span></dt><dt><span class="section"><a href="#index-to-object-database">index -&gt; object database</a></span></dt><dt><span class="section"><a href="#object-database-to-index">object database -&gt; index</a></span></dt><dt><span class="section"><a href="#index-to-working-directory">index -&gt; working directory</a></span></dt><dt><span class="section"><a href="#tying-it-all-together">Tying it all together</a></span></dt></dl></dd><dt><span class="section"><a href="#examining-the-data">Examining the data</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees">Merging multiple trees</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees-2">Merging multiple trees, continued</a></span></dt></dl></dd><dt><span class="chapter"><a href="#hacking-git">10. Hacking git</a></span></dt><dd><dl><dt><span class="section"><a href="#object-details">Object storage format</a></span></dt><dt><span class="section"><a href="#birdview-on-the-source-code">A birds-eye view of Git's source code</a></span></dt></dl></dd><dt><span class="chapter"><a href="#glossary">11. GIT Glossary</a></span></dt><dt><span class="appendix"><a href="#git-quick-start">A. Git Quick Reference</a></span></dt><dd><dl><dt><span class="section"><a href="#quick-creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#managing-branches">Managing branches</a></span></dt><dt><span class="section"><a href="#exploring-history">Exploring history</a></span></dt><dt><span class="section"><a href="#making-changes">Making changes</a></span></dt><dt><span class="section"><a href="#merging">Merging</a></span></dt><dt><span class="section"><a href="#sharing-your-changes">Sharing your changes</a></span></dt><dt><span class="section"><a href="#repository-maintenance">Repository maintenance</a></span></dt></dl></dd><dt><span class="appendix"><a href="#todo">B. Notes and todo list for this manual</a></span></dt></dl></div><div class="preface" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id264725"></a>Preface</h2></div></div></div><p>Git is a fast distributed revision control system.</p><p>This manual is designed to be readable by someone with basic UNIX
 command-line skills, but no previous knowledge of git.</p><p><a href="#repositories-and-branches" title="Chapter 1. Repositories and Branches">Chapter 1, <i>Repositories and Branches</i></a> and <a href="#exploring-git-history" title="Chapter 2. Exploring git history">Chapter 2, <i>Exploring git history</i></a> explain how
 to fetch and study a project using git—read these chapters to learn how
 to build and test a particular version of a software project, search for
@@ -383,7 +383,7 @@ echo "git shortlog --no-merges v$new ^v$last &gt; ../ShortLog"<br>
 echo "git diff --stat --summary -M v$last v$new &gt; ../diffstat-$new"</p></div><p>and then he just cut-and-pastes the output commands after verifying that
 they look OK.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Finding-comments-with-given-content"></a>Finding commits referencing a file with given content</h3></div></div></div><p>Somebody hands you a copy of a file, and asks which commits modified a
 file such that it contained the given content either before or after the
-commit.  You can find out with this:</p><div class="literallayout"><p>$  git log --raw --abbrev=40 --pretty=oneline -- filename |<br>
+commit.  You can find out with this:</p><div class="literallayout"><p>$  git log --raw --abbrev=40 --pretty=oneline |<br>
         grep -B 1 `git hash-object filename`</p></div><p>Figuring out why this works is left as an exercise to the (advanced)
 student.  The <a href="git-log.html" target="_top">git-log(1)</a>, <a href="git-diff-tree.html" target="_top">git-diff-tree(1)</a>, and
 <a href="git-hash-object.html" target="_top">git-hash-object(1)</a> man pages may prove helpful.</p></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="Developing-with-git"></a>Chapter 3. Developing with git</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#telling-git-your-name">Telling git your name</a></span></dt><dt><span class="section"><a href="#creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#how-to-make-a-commit">How to make a commit</a></span></dt><dt><span class="section"><a href="#creating-good-commit-messages">Creating good commit messages</a></span></dt><dt><span class="section"><a href="#ignoring-files">Ignoring files</a></span></dt><dt><span class="section"><a href="#how-to-merge">How to merge</a></span></dt><dt><span class="section"><a href="#resolving-a-merge">Resolving a merge</a></span></dt><dd><dl><dt><span class="section"><a href="#conflict-resolution">Getting conflict-resolution help during a merge</a></span></dt></dl></dd><dt><span class="section"><a href="#undoing-a-merge">Undoing a merge</a></span></dt><dt><span class="section"><a href="#fast-forwards">Fast-forward merges</a></span></dt><dt><span class="section"><a href="#fixing-mistakes">Fixing mistakes</a></span></dt><dd><dl><dt><span class="section"><a href="#reverting-a-commit">Fixing a mistake with a new commit</a></span></dt><dt><span class="section"><a href="#fixing-a-mistake-by-editing-history">Fixing a mistake by editing history</a></span></dt><dt><span class="section"><a href="#checkout-of-path">Checking out an old version of a file</a></span></dt><dt><span class="section"><a href="#interrupted-work">Temporarily setting aside work in progress</a></span></dt></dl></dd><dt><span class="section"><a href="#ensuring-good-performance">Ensuring good performance</a></span></dt><dt><span class="section"><a href="#ensuring-reliability">Ensuring reliability</a></span></dt><dd><dl><dt><span class="section"><a href="#checking-for-corruption">Checking the repository for corruption</a></span></dt><dt><span class="section"><a href="#recovering-lost-changes">Recovering lost changes</a></span></dt></dl></dd></dl></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="telling-git-your-name"></a>Telling git your name</h2></div></div></div><p>Before creating any commits, you should introduce yourself to git.  The
@@ -593,7 +593,7 @@ reset your working tree and the index to match the tip of your
 current branch.  Then you can make your fix as usual.</p><div class="literallayout"><p>... edit and test ...<br>
 $ git commit -a -m "blorpl: typofix"</p></div><p>After that, you can go back to what you were working on with
 <code class="literal">git stash apply</code>:</p><div class="literallayout"><p>$ git stash apply</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ensuring-good-performance"></a>Ensuring good performance</h2></div></div></div><p>On large repositories, git depends on compression to keep the history
-information from taking up to much space on disk or in memory.</p><p>This compression is not performed automatically.  Therefore you
+information from taking up too much space on disk or in memory.</p><p>This compression is not performed automatically.  Therefore you
 should occasionally run <a href="git-gc.html" target="_top">git-gc(1)</a>:</p><div class="literallayout"><p>$ git gc</p></div><p>to recompress the archive.  This can be very time-consuming, so
 you may prefer to run git-gc when you are not doing other work.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ensuring-reliability"></a>Ensuring reliability</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="checking-for-corruption"></a>Checking the repository for corruption</h3></div></div></div><p>The <a href="git-fsck.html" target="_top">git-fsck(1)</a> command runs a number of self-consistency checks
 on the repository, and reports on any problems.  This may take some
@@ -609,10 +609,10 @@ dangling tree b24c2473f1fd3d91352a624795be026d64c8841f<br>
 ...</p></div><p>Dangling objects are not a problem.  At worst they may take up a little
 extra disk space.  They can sometimes provide a last-resort method for
 recovering lost work—see <a href="#dangling-objects" title="Dangling objects">the section called “Dangling objects”</a> for details.  However, if
-you wish, you can remove them with <a href="git-prune.html" target="_top">git-prune(1)</a> or the —prune
+you wish, you can remove them with <a href="git-prune.html" target="_top">git-prune(1)</a> or the <code class="literal">—prune</code>
 option to <a href="git-gc.html" target="_top">git-gc(1)</a>:</p><div class="literallayout"><p>$ git gc --prune</p></div><p>This may be time-consuming.  Unlike most other git operations (including
 git-gc when run without any options), it is not safe to prune while
-other git operations are in progress in the same repository.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="recovering-lost-changes"></a>Recovering lost changes</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="reflogs"></a>Reflogs</h4></div></div></div><p>Say you modify a branch with <a href="git-reset.html" target="_top">git-reset(1)</a> —hard, and then
+other git operations are in progress in the same repository.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="recovering-lost-changes"></a>Recovering lost changes</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="reflogs"></a>Reflogs</h4></div></div></div><p>Say you modify a branch with <code class="literal"><a href="git-reset.html" target="_top">git-reset(1)</a> —hard</code>, and then
 realize that the branch was the only reference you had to that point in
 history.</p><p>Fortunately, git also keeps a log, called a "reflog", of all the
 previous values of each branch.  So in this case you can still find the
@@ -659,7 +659,7 @@ merges from the HEAD branch of the origin repository.  So often you can
 accomplish the above with just a simple</p><div class="literallayout"><p>$ git pull</p></div><p>More generally, a branch that is created from a remote branch will pull
 by default from that branch.  See the descriptions of the
 branch.&lt;name&gt;.remote and branch.&lt;name&gt;.merge options in
-<a href="git-config.html" target="_top">git-config(1)</a>, and the discussion of the —track option in
+<a href="git-config.html" target="_top">git-config(1)</a>, and the discussion of the <code class="literal">—track</code> option in
 <a href="git-checkout.html" target="_top">git-checkout(1)</a>, to learn how to control these defaults.</p><p>In addition to saving you keystrokes, "git pull" also helps you by
 producing a default commit message documenting the branch and
 repository that you pulled from.</p><p>(But note that no such commit will be created in the case of a
@@ -692,7 +692,7 @@ other direction.</p><p>If you and the maintainer both have accounts on the same
 you can just pull changes from each other's repositories directly;
 commands that accept repository URLs as arguments will also accept a
 local directory name:</p><div class="literallayout"><p>$ git clone /path/to/repository<br>
-$ git pull /path/to/other/repository</p></div><p>or an ssh url:</p><div class="literallayout"><p>$ git clone ssh://yourhost/~you/repository</p></div><p>For projects with few developers, or for synchronizing a few private
+$ git pull /path/to/other/repository</p></div><p>or an ssh URL:</p><div class="literallayout"><p>$ git clone ssh://yourhost/~you/repository</p></div><p>For projects with few developers, or for synchronizing a few private
 repositories, this may be all you need.</p><p>However, the more common way to do this is to maintain a separate public
 repository (usually on a different host) for others to pull changes
 from.  This is usually more convenient, and allows you to cleanly
@@ -717,7 +717,7 @@ just the contents of the ".git" directory, without any files checked out
 around it.</p><p>Next, copy proj.git to the server where you plan to host the
 public repository.  You can use scp, rsync, or whatever is most
 convenient.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exporting-via-git"></a>Exporting a git repository via the git protocol</h3></div></div></div><p>This is the preferred method.</p><p>If someone else administers the server, they should tell you what
-directory to put the repository in, and what git:// url it will appear
+directory to put the repository in, and what git:// URL it will appear
 at.  You can then skip to the section
 "<a href="#pushing-changes-to-a-public-repository" title="Pushing changes to a public repository">Pushing changes to a public repository</a>", below.</p><p>Otherwise, all you need to do is start <a href="git-daemon.html" target="_top">git-daemon(1)</a>; it will
 listen on port 9418.  By default, it will allow access to any directory
@@ -733,8 +733,8 @@ $ cd proj.git<br>
 $ git --bare update-server-info<br>
 $ chmod a+x hooks/post-update</p></div><p>(For an explanation of the last two lines, see
 <a href="git-update-server-info.html" target="_top">git-update-server-info(1)</a>, and the documentation
-<a href="hooks.html" target="_top">Hooks used by git</a>.)</p><p>Advertise the url of proj.git.  Anybody else should then be able to
-clone or pull from that url, for example with a command line like:</p><div class="literallayout"><p>$ git clone http://yourserver.com/~you/proj.git</p></div><p>(See also
+<a href="hooks.html" target="_top">Hooks used by git</a>.)</p><p>Advertise the URL of proj.git.  Anybody else should then be able to
+clone or pull from that URL, for example with a command line like:</p><div class="literallayout"><p>$ git clone http://yourserver.com/~you/proj.git</p></div><p>(See also
 <a href="howto/setup-git-server-over-http.txt" target="_top">setup-git-server-over-http</a>
 for a slightly more sophisticated setup using WebDAV which also
 allows pushing over http.)</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="pushing-changes-to-a-public-repository"></a>Pushing changes to a public repository</h3></div></div></div><p>Note that the two techniques outlined above (exporting via
@@ -747,7 +747,7 @@ branch named "master", run</p><div class="literallayout"><p>$ git push ssh://
 a <a href="#fast-forwards" title="Fast-forward merges">fast forward</a>.  Normally this is a sign of
 something wrong.  However, if you are sure you know what you're
 doing, you may force git-push to perform the update anyway by
-proceeding the branch name by a plus sign:</p><div class="literallayout"><p>$ git push ssh://yourserver.com/~you/proj.git +master</p></div><p>Note that the target of a "push" is normally a
+preceding the branch name by a plus sign:</p><div class="literallayout"><p>$ git push ssh://yourserver.com/~you/proj.git +master</p></div><p>Note that the target of a "push" is normally a
 <a href="#def_bare_repository">bare</a> repository.  You can also push to a
 repository that has a checked-out working tree, but the working tree
 will not be updated by the push.  This may lead to unexpected results if
@@ -805,7 +805,7 @@ public trees using <a href="git-remote.html" target="_top">git-remote(1)</a> to
 at the current tip of origin/master branch, and should be set up (using
 the —track option to <a href="git-branch.html" target="_top">git-branch(1)</a>) to merge changes in from
 Linus by default.</p><div class="literallayout"><p>$ git branch --track test origin/master<br>
-$ git branch --track release origin/master</p></div><p>These can be easily kept up to date using <a href="git-pull.html" target="_top">git-pull(1)</a></p><div class="literallayout"><p>$ git checkout test &amp;&amp; git pull<br>
+$ git branch --track release origin/master</p></div><p>These can be easily kept up to date using <a href="git-pull.html" target="_top">git-pull(1)</a>.</p><div class="literallayout"><p>$ git checkout test &amp;&amp; git pull<br>
 $ git checkout release &amp;&amp; git pull</p></div><p>Important note!  If you have any local changes in these branches, then
 this merge will create a commit object in the history (with no local
 changes git will simply do a "Fast forward" merge).  Many people dislike
@@ -833,11 +833,11 @@ see the value of keeping each patch (or patch series) in its own branch.  It
 means that the patches can be moved into the "release" tree in any order.</p><div class="literallayout"><p>$ git checkout release &amp;&amp; git pull . speed-up-spinlocks</p></div><p>After a while, you will have a number of branches, and despite the
 well chosen names you picked for each of them, you may forget what
 they are for, or what status they are in.  To get a reminder of what
-changes are in a specific branch, use:</p><div class="literallayout"><p>$ git log linux..branchname | git-shortlog</p></div><p>To see whether it has already been merged into the test or release branches
-use:</p><div class="literallayout"><p>$ git log test..branchname</p></div><p>or</p><div class="literallayout"><p>$ git log release..branchname</p></div><p>(If this branch has not yet been merged you will see some log entries.
+changes are in a specific branch, use:</p><div class="literallayout"><p>$ git log linux..branchname | git-shortlog</p></div><p>To see whether it has already been merged into the test or release branches,
+use:</p><div class="literallayout"><p>$ git log test..branchname</p></div><p>or</p><div class="literallayout"><p>$ git log release..branchname</p></div><p>(If this branch has not yet been merged, you will see some log entries.
 If it has been merged, then there will be no output.)</p><p>Once a patch completes the great cycle (moving from test to release,
 then pulled by Linus, and finally coming back into your local
-"origin/master" branch) the branch for this change is no longer needed.
+"origin/master" branch), the branch for this change is no longer needed.
 You detect this when the output from:</p><div class="literallayout"><p>$ git log origin..branchname</p></div><p>is empty.  At this point the branch can be deleted:</p><div class="literallayout"><p>$ git branch -d branchname</p></div><p>Some changes are so trivial that it is not necessary to create a separate
 branch and then merge into each of the test and release branches.  For
 these changes, just apply directly to the "release" branch, and then
@@ -987,7 +987,7 @@ patches to the new mywork.  The result will look like:</p><pre class="literallay
                   a'--b'--c' &lt;-- mywork</pre><p>In the process, it may discover conflicts.  In that case it will stop
 and allow you to fix the conflicts; after fixing conflicts, use "git
 add" to update the index with those contents, and then, instead of
-running git-commit, just run</p><div class="literallayout"><p>$ git rebase --continue</p></div><p>and git will continue applying the rest of the patches.</p><p>At any point you may use the —abort option to abort this process and
+running git-commit, just run</p><div class="literallayout"><p>$ git rebase --continue</p></div><p>and git will continue applying the rest of the patches.</p><p>At any point you may use the <code class="literal">—abort</code> option to abort this process and
 return mywork to the state it had before you started the rebase:</p><div class="literallayout"><p>$ git rebase --abort</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="modifying-one-commit"></a>Modifying a single commit</h2></div></div></div><p>We saw in <a href="#fixing-a-mistake-by-editing-history" title="Fixing a mistake by editing history">the section called “Fixing a mistake by editing history”</a> that you can replace the
 most recent commit using</p><div class="literallayout"><p>$ git commit --amend</p></div><p>which will replace the old commit by a new commit incorporating your
 changes, giving you a chance to edit the old commit message first.</p><p>You can also use a combination of this and <a href="git-rebase.html" target="_top">git-rebase(1)</a> to edit
@@ -1004,9 +1004,9 @@ new commits having new object names.</p></div><div class="section" lang="en"><di
 allows you to apply the change introduced by that commit and create a
 new commit that records it.  So, for example, if "mywork" points to a
 series of patches on top of "origin", you might do something like:</p><div class="literallayout"><p>$ git checkout -b mywork-new origin<br>
-$ gitk origin..mywork &amp;</p></div><p>And browse through the list of patches in the mywork branch using gitk,
+$ gitk origin..mywork &amp;</p></div><p>and browse through the list of patches in the mywork branch using gitk,
 applying them (possibly in a different order) to mywork-new using
-cherry-pick, and possibly modifying them as you go using commit —amend.
+cherry-pick, and possibly modifying them as you go using <code class="literal">commit —amend</code>.
 The <a href="git-gui.html" target="_top">git-gui(1)</a> command may also help as it allows you to
 individually select diff hunks for inclusion in the index (by
 right-clicking on the diff hunk and choosing "Stage Hunk for Commit").</p><p>Another technique is to use git-format-patch to create a series of
@@ -1094,7 +1094,7 @@ others:</p><div class="itemizedlist"><ul type="disc"><li>
 Git can quickly determine whether two objects are identical or not,
   just by comparing names.
 </li><li>
-Since object names are computed the same way in ever repository, the
+Since object names are computed the same way in every repository, the
   same content stored in two repositories will always be stored under
   the same name.
 </li><li>
@@ -1110,7 +1110,7 @@ A <a href="#def_tree_object">"tree" object</a> is an object that ties one or mor
   can refer to other tree objects, thus creating a directory hierarchy.
 </li><li>
 A <a href="#def_commit_object">"commit" object</a> ties such directory hierarchies
-  together into a <a href="#def_DAG">directed acyclic graph</a> of revisions - each
+  together into a <a href="#def_DAG">directed acyclic graph</a> of revisionseach
   commit contains the object name of exactly one tree designating the
   directory hierarchy at the time of the commit. In addition, a commit
   refers to "parent" commit objects that describe the history of how we
@@ -1263,7 +1263,7 @@ pointer itself just doesn't, since you replaced it with another one.</p><p>There
 example, a "dangling blob" may arise because you did a "git add" of a
 file, but then, before you actually committed it and made it part of the
 bigger picture, you changed something else in that file and committed
-that <span class="strong"><strong>updated</strong></span> thing - the old state that you added originally ends up
+that <span class="strong"><strong>updated</strong></span> thingthe old state that you added originally ends up
 not being pointed to by any commit or tree, so it's now a dangling blob
 object.</p><p>Similarly, when the "recursive" merge strategy runs, and finds that
 there are criss-cross merges and thus more than one merge base (which is
@@ -1274,7 +1274,7 @@ base, and again, those are real objects, but the end result will not end
 up pointing to them, so they end up "dangling" in your repository.</p><p>Generally, dangling objects aren't anything to worry about. They can
 even be very useful: if you screw something up, the dangling objects can
 be how you recover your old tree (say, you did a rebase, and realized
-that you really didn't want to - you can look at what dangling objects
+that you really didn't want toyou can look at what dangling objects
 you have, and decide to reset your head to some old dangling state).</p><p>For commits, you can just use:</p><div class="literallayout"><p>$ gitk &lt;dangling-commit-sha-goes-here&gt; --not --all</p></div><p>This asks for all the history reachable from the given commit but not
 from any branch, tag, or other reference.  If you decide it's something
 you want, you can always create a new reference to it, e.g.,</p><div class="literallayout"><p>$ git branch recovered-branch &lt;dangling-commit-sha-goes-here&gt;</p></div><p>For blobs and trees, you can't do the same, but you can still examine
@@ -1288,8 +1288,8 @@ because you interrupted a "git fetch" with ^C or something like that,
 leaving _some_ of the new objects in the object database, but just
 dangling and useless.</p><p>Anyway, once you are sure that you're not interested in any dangling
 state, you can just prune all unreachable objects:</p><div class="literallayout"><p>$ git prune</p></div><p>and they'll be gone. But you should only run "git prune" on a quiescent
-repository - it's kind of like doing a filesystem fsck recovery: you
-don't want to do that while the filesystem is mounted.</p><p>(The same is true of "git-fsck" itself, btw - but since
+repositoryit's kind of like doing a filesystem fsck recovery: you
+don't want to do that while the filesystem is mounted.</p><p>(The same is true of "git-fsck" itself, btw, but since
 git-fsck never actually <span class="strong"><strong>changes</strong></span> the repository, it just reports
 on what it found, git-fsck itself is never "dangerous" to run.
 Running it while somebody is actually changing the repository can cause
@@ -1332,7 +1332,7 @@ column in the <a href="git-ls-files.html" target="_top">git-ls-files(1)</a> outp
 number, and will take on values other than 0 for files with merge
 conflicts.</p></li></ol></div><p>The index is thus a sort of temporary staging area, which is filled with
 a tree which you are in the process of working on.</p><p>If you blow the index away entirely, you generally haven't lost any
-information as long as you have the name of the tree that it described.</p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="submodules"></a>Chapter 8. Submodules</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#id279699">Pitfalls with submodules</a></span></dt></dl></div><p>Large projects are often composed of smaller, self-contained modules.  For
+information as long as you have the name of the tree that it described.</p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="submodules"></a>Chapter 8. Submodules</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#id279798">Pitfalls with submodules</a></span></dt></dl></div><p>Large projects are often composed of smaller, self-contained modules.  For
 example, an embedded Linux distribution's source tree would include every
 piece of software in the distribution with some local modifications; a movie
 player might need to build against a specific, known-working version of a
@@ -1426,7 +1426,7 @@ index d266b98..261dfac 160000<br>
 $ git add a<br>
 $ git commit -m "Updated submodule a."<br>
 $ git push</p></div><p>You have to run <code class="literal">git submodule update</code> after <code class="literal">git pull</code> if you want to update
-submodules, too.</p><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id279699"></a>Pitfalls with submodules</h2></div></div></div><p>Always publish the submodule change before publishing the change to the
+submodules, too.</p><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id279798"></a>Pitfalls with submodules</h2></div></div></div><p>Always publish the submodule change before publishing the change to the
 superproject that references it. If you forget to publish the submodule change,
 others won't be able to clone the repository:</p><div class="literallayout"><p>$ cd ~/git/super/a<br>
 $ echo i added another line to this file &gt;&gt; a.txt<br>
@@ -1462,9 +1462,10 @@ accessed by <a href="git-ls-tree.html" target="_top">git-ls-tree(1)</a>.  Two tr
 <a href="git-diff-tree.html" target="_top">git-diff-tree(1)</a>.</p><p>A tag is created with <a href="git-mktag.html" target="_top">git-mktag(1)</a>, and the signature can be
 verified by <a href="git-verify-tag.html" target="_top">git-verify-tag(1)</a>, though it is normally simpler to
 use <a href="git-tag.html" target="_top">git-tag(1)</a> for both.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="the-workflow"></a>The Workflow</h2></div></div></div><p>High-level operations such as <a href="git-commit.html" target="_top">git-commit(1)</a>,
-<a href="git-checkout.html" target="_top">git-checkout(1)</a> and git-reset[1] work by moving data between the
-working tree, the index, and the object database.  Git provides
-low-level operations which perform each of these steps individually.</p><p>Generally, all "git" operations work on the index file. Some operations
+<a href="git-checkout.html" target="_top">git-checkout(1)</a> and <a href="git-reset.html" target="_top">git-reset(1)</a> work by moving data
+between the working tree, the index, and the object database.  Git
+provides low-level operations which perform each of these steps
+individually.</p><p>Generally, all "git" operations work on the index file. Some operations
 work <span class="strong"><strong>purely</strong></span> on the index file (showing the current state of the
 index), but most operations move data between the index file and either
 the database or the working directory. Thus there are four main
@@ -1485,12 +1486,12 @@ will refresh the "stat" information of each index to match the current
 stat information. It will <span class="emphasis"><em>not</em></span> update the object status itself, and
 it will only update the fields that are used to quickly test whether
 an object still matches its old backing store object.</p><p>The previously introduced <a href="git-add.html" target="_top">git-add(1)</a> is just a wrapper for
-<a href="git-update-index.html" target="_top">git-update-index(1)</a>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="index-to-object-database"></a>index -&gt; object database</h3></div></div></div><p>You write your current index file to a "tree" object with the program</p><div class="literallayout"><p>$ git write-tree</p></div><p>that doesn't come with any options - it will just write out the
+<a href="git-update-index.html" target="_top">git-update-index(1)</a>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="index-to-object-database"></a>index -&gt; object database</h3></div></div></div><p>You write your current index file to a "tree" object with the program</p><div class="literallayout"><p>$ git write-tree</p></div><p>that doesn't come with any optionsit will just write out the
 current index into the set of tree objects that describe that state,
 and it will return the name of the resulting top-level tree. You can
 use that tree to re-generate the index at any time by going in the
 other direction:</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-database-to-index"></a>object database -&gt; index</h3></div></div></div><p>You read a "tree" file from the object database, and use that to
-populate (and overwrite - don't do this if your index contains any
+populate (and overwritedon't do this if your index contains any
 unsaved state that you might want to restore later!) your current
 index.  Normal operation is just</p><div class="literallayout"><p>$ git-read-tree &lt;sha1 of tree&gt;</p></div><p>and your index file will now be equivalent to the tree that you saved
 earlier. However, that is only your <span class="emphasis"><em>index</em></span> file: your working
@@ -1507,7 +1508,7 @@ need to use the "-f" flag (<span class="emphasis"><em>before</em></span> the "-a
 <span class="emphasis"><em>force</em></span> the checkout.</p><p>Finally, there are a few odds and ends which are not purely moving
 from one representation to the other:</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="tying-it-all-together"></a>Tying it all together</h3></div></div></div><p>To commit a tree you have instantiated with "git-write-tree", you'd
 create a "commit" object that refers to that tree and the history
-behind it - most notably the "parent" commits that preceded it in
+behind itmost notably the "parent" commits that preceded it in
 history.</p><p>Normally a "commit" has one parent: the previous state of the tree
 before a certain change was made. However, sometimes it can have two
 or more parent commits, in which case we call it a "merge", due to the
@@ -1579,12 +1580,12 @@ object.</p><p>Once you know the three trees you are going to merge (the one "ori
 tree, aka the common tree, and the two "result" trees, aka the branches
 you want to merge), you do a "merge" read into the index. This will
 complain if it has to throw away your old index contents, so you should
-make sure that you've committed those - in fact you would normally
+make sure that you've committed thosein fact you would normally
 always do a merge against your last commit (which should thus match what
 you have in your current index anyway).</p><p>To do the merge, do</p><div class="literallayout"><p>$ git-read-tree -m -u &lt;origtree&gt; &lt;yourtree&gt; &lt;targettree&gt;</p></div><p>which will do all trivial merge operations for you directly in the
 index file, and you can just write the result out with
 <code class="literal">git-write-tree</code>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="merging-multiple-trees-2"></a>Merging multiple trees, continued</h2></div></div></div><p>Sadly, many merges aren't trivial. If there are files that have
-been added.moved or removed, or if both branches have modified the
+been addedmoved or removed, or if both branches have modified the
 same file, you will be left with an index tree that contains "merge
 entries" in it. Such an index tree can <span class="emphasis"><em>NOT</em></span> be written out to a tree
 object, and you will have to resolve any such merge clashes using
@@ -1715,7 +1716,7 @@ object name, and if it refers to an object which is present in the current
 repository, it writes the resulting SHA-1 into the variable <code class="literal">sha1</code>.</p><p>Two things are interesting here:</p><div class="itemizedlist"><ul type="disc"><li>
 <code class="literal">get_sha1()</code> returns 0 on _success_.  This might surprise some new
   Git hackers, but there is a long tradition in UNIX to return different
-  negative numbers in case of different errors — and 0 on success.
+  negative numbers in case of different errorsand 0 on success.
 </li><li>
 the variable <code class="literal">sha1</code> in the function signature of <code class="literal">get_sha1()</code> is <code class="literal">unsigned
   char *</code>, but is actually expected to be a pointer to <code class="literal">unsigned
@@ -1797,8 +1798,8 @@ itself!</p></div></div><div class="chapter" lang="en"><div class="titlepage"><di
 </span></dt><dd>
         In <a href="#def_SCM">SCM</a> jargon, "cherry pick" means to choose a subset of
         changes out of a series of changes (typically commits) and record them
-        as a new series of changes on top of different codebase. In GIT, this is
-        performed by "git cherry-pick" command to extract the change introduced
+        as a new series of changes on top of different codebase. In GIT, this is
+        performed by the "git cherry-pick" command to extract the change introduced
         by an existing <a href="#def_commit">commit</a> and to record it based on the tip
         of the current <a href="#def_branch">branch</a> as a new commit.
 </dd><dt><span class="term">
@@ -2058,7 +2059,7 @@ This commit is referred to as a "merge commit", or sometimes just a
 </span></dt><dd>
         The term <a href="#def_pickaxe">pickaxe</a> refers to an option to the diffcore
         routines that help select changes that add or delete a given text
-        string. With the —pickaxe-all option, it can be used to view the full
+        string. With the <code class="literal">—pickaxe-all</code> option, it can be used to view the full
         <a href="#def_changeset">changeset</a> that introduced or removed, say, a
         particular line of text. See <a href="git-diff.html" target="_top">git-diff(1)</a>.
 </dd><dt><span class="term">
@@ -2082,8 +2083,8 @@ This commit is referred to as a "merge commit", or sometimes just a
 </span></dt><dd>
         Pushing a <a href="#def_branch">branch</a> means to get the branch's
         <a href="#def_head_ref">head ref</a> from a remote <a href="#def_repository">repository</a>,
-        find out if it is an ancestor to the branch's local
-        head ref is a direct, and in that case, putting all
+        find out if it is a direct ancestor to the branch's local
+        head ref, and in that case, putting all
         objects, which are <a href="#def_reachable">reachable</a> from the local
         head ref, and which are missing from the remote
         repository, into the remote
@@ -2133,7 +2134,7 @@ This commit is referred to as a "merge commit", or sometimes just a
         it as my origin branch head". And <code class="literal">git push
         $URL refs/heads/master:refs/heads/to-upstream</code> means "publish my
         master branch head as to-upstream branch at $URL". See also
-        <a href="git-push.html" target="_top">git-push(1)</a>
+        <a href="git-push.html" target="_top">git-push(1)</a>.
 </dd><dt><span class="term">
 <a name="def_repository"></a>repository
 </span></dt><dd>
@@ -2263,7 +2264,7 @@ $ git commit</p></div><p>From a remote repository:</p><div class="literallayou
 $ cd project</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="managing-branches"></a>Managing branches</h2></div></div></div><div class="literallayout"><p>$ git branch         # list all local branches in this repo<br>
 $ git checkout test  # switch working directory to branch "test"<br>
 $ git branch new     # create branch "new" starting at current HEAD<br>
-$ git branch -d new  # delete branch "new"</p></div><p>Instead of basing new branch on current HEAD (the default), use:</p><div class="literallayout"><p>$ git branch new test    # branch named "test"<br>
+$ git branch -d new  # delete branch "new"</p></div><p>Instead of basing new branch on current HEAD (the default), use:</p><div class="literallayout"><p>$ git branch new test    # branch named "test"<br>
 $ git branch new v2.6.15 # tag named v2.6.15<br>
 $ git branch new HEAD^   # commit before the most recent<br>
 $ git branch new HEAD^^  # commit before that<br>
index c7fdf25e27c94e9b152592a28bf7acc64dfa0e07..d99adc6f728aebfa0b7e4b956c4f784e3d2f7bd4 100644 (file)
@@ -926,7 +926,7 @@ file such that it contained the given content either before or after the
 commit.  You can find out with this:
 
 -------------------------------------------------
-$  git log --raw --abbrev=40 --pretty=oneline -- filename |
+$  git log --raw --abbrev=40 --pretty=oneline |
        grep -B 1 `git hash-object filename`
 -------------------------------------------------
 
@@ -1495,7 +1495,7 @@ Ensuring good performance
 -------------------------
 
 On large repositories, git depends on compression to keep the history
-information from taking up to much space on disk or in memory.
+information from taking up too much space on disk or in memory.
 
 This compression is not performed automatically.  Therefore you
 should occasionally run gitlink:git-gc[1]:
@@ -1536,7 +1536,7 @@ dangling tree b24c2473f1fd3d91352a624795be026d64c8841f
 Dangling objects are not a problem.  At worst they may take up a little
 extra disk space.  They can sometimes provide a last-resort method for
 recovering lost work--see <<dangling-objects>> for details.  However, if
-you wish, you can remove them with gitlink:git-prune[1] or the --prune
+you wish, you can remove them with gitlink:git-prune[1] or the `--prune`
 option to gitlink:git-gc[1]:
 
 -------------------------------------------------
@@ -1555,7 +1555,7 @@ Recovering lost changes
 Reflogs
 ^^^^^^^
 
-Say you modify a branch with gitlink:git-reset[1] --hard, and then
+Say you modify a branch with `gitlink:git-reset[1] --hard`, and then
 realize that the branch was the only reference you had to that point in
 history.
 
@@ -1684,7 +1684,7 @@ $ git pull
 More generally, a branch that is created from a remote branch will pull
 by default from that branch.  See the descriptions of the
 branch.<name>.remote and branch.<name>.merge options in
-gitlink:git-config[1], and the discussion of the --track option in
+gitlink:git-config[1], and the discussion of the `--track` option in
 gitlink:git-checkout[1], to learn how to control these defaults.
 
 In addition to saving you keystrokes, "git pull" also helps you by
@@ -1782,7 +1782,7 @@ $ git clone /path/to/repository
 $ git pull /path/to/other/repository
 -------------------------------------------------
 
-or an ssh url:
+or an ssh URL:
 
 -------------------------------------------------
 $ git clone ssh://yourhost/~you/repository
@@ -1843,7 +1843,7 @@ Exporting a git repository via the git protocol
 This is the preferred method.
 
 If someone else administers the server, they should tell you what
-directory to put the repository in, and what git:// url it will appear
+directory to put the repository in, and what git:// URL it will appear
 at.  You can then skip to the section
 "<<pushing-changes-to-a-public-repository,Pushing changes to a public
 repository>>", below.
@@ -1880,8 +1880,8 @@ $ chmod a+x hooks/post-update
 gitlink:git-update-server-info[1], and the documentation
 link:hooks.html[Hooks used by git].)
 
-Advertise the url of proj.git.  Anybody else should then be able to
-clone or pull from that url, for example with a command line like:
+Advertise the URL of proj.git.  Anybody else should then be able to
+clone or pull from that URL, for example with a command line like:
 
 -------------------------------------------------
 $ git clone http://yourserver.com/~you/proj.git
@@ -1920,7 +1920,7 @@ As with git-fetch, git-push will complain if this does not result in
 a <<fast-forwards,fast forward>>.  Normally this is a sign of
 something wrong.  However, if you are sure you know what you're
 doing, you may force git-push to perform the update anyway by
-proceeding the branch name by a plus sign:
+preceding the branch name by a plus sign:
 
 -------------------------------------------------
 $ git push ssh://yourserver.com/~you/proj.git +master
@@ -2040,7 +2040,7 @@ $ git branch --track test origin/master
 $ git branch --track release origin/master
 -------------------------------------------------
 
-These can be easily kept up to date using gitlink:git-pull[1]
+These can be easily kept up to date using gitlink:git-pull[1].
 
 -------------------------------------------------
 $ git checkout test && git pull
@@ -2132,7 +2132,7 @@ changes are in a specific branch, use:
 $ git log linux..branchname | git-shortlog
 -------------------------------------------------
 
-To see whether it has already been merged into the test or release branches
+To see whether it has already been merged into the test or release branches,
 use:
 
 -------------------------------------------------
@@ -2145,12 +2145,12 @@ or
 $ git log release..branchname
 -------------------------------------------------
 
-(If this branch has not yet been merged you will see some log entries.
+(If this branch has not yet been merged, you will see some log entries.
 If it has been merged, then there will be no output.)
 
 Once a patch completes the great cycle (moving from test to release,
 then pulled by Linus, and finally coming back into your local
-"origin/master" branch) the branch for this change is no longer needed.
+"origin/master" branch), the branch for this change is no longer needed.
 You detect this when the output from:
 
 -------------------------------------------------
@@ -2412,7 +2412,7 @@ $ git rebase --continue
 
 and git will continue applying the rest of the patches.
 
-At any point you may use the --abort option to abort this process and
+At any point you may use the `--abort` option to abort this process and
 return mywork to the state it had before you started the rebase:
 
 -------------------------------------------------
@@ -2479,9 +2479,9 @@ $ git checkout -b mywork-new origin
 $ gitk origin..mywork &
 -------------------------------------------------
 
-And browse through the list of patches in the mywork branch using gitk,
+and browse through the list of patches in the mywork branch using gitk,
 applying them (possibly in a different order) to mywork-new using
-cherry-pick, and possibly modifying them as you go using commit --amend.
+cherry-pick, and possibly modifying them as you go using `commit --amend`.
 The gitlink:git-gui[1] command may also help as it allows you to
 individually select diff hunks for inclusion in the index (by
 right-clicking on the diff hunk and choosing "Stage Hunk for Commit").
@@ -2739,7 +2739,7 @@ others:
 
 - Git can quickly determine whether two objects are identical or not,
   just by comparing names.
-- Since object names are computed the same way in ever repository, the
+- Since object names are computed the same way in every repository, the
   same content stored in two repositories will always be stored under
   the same name.
 - Git can detect errors when it reads an object, by checking that the
@@ -2756,7 +2756,7 @@ There are four different types of objects: "blob", "tree", "commit", and
   "blob" objects into a directory structure. In addition, a tree object
   can refer to other tree objects, thus creating a directory hierarchy.
 - A <<def_commit_object,"commit" object>> ties such directory hierarchies
-  together into a <<def_DAG,directed acyclic graph>> of revisions - each
+  together into a <<def_DAG,directed acyclic graph>> of revisions--each
   commit contains the object name of exactly one tree designating the
   directory hierarchy at the time of the commit. In addition, a commit
   refers to "parent" commit objects that describe the history of how we
@@ -3029,7 +3029,7 @@ There are also other situations that cause dangling objects. For
 example, a "dangling blob" may arise because you did a "git add" of a
 file, but then, before you actually committed it and made it part of the
 bigger picture, you changed something else in that file and committed
-that *updated* thing - the old state that you added originally ends up
+that *updated* thing--the old state that you added originally ends up
 not being pointed to by any commit or tree, so it's now a dangling blob
 object.
 
@@ -3044,7 +3044,7 @@ up pointing to them, so they end up "dangling" in your repository.
 Generally, dangling objects aren't anything to worry about. They can
 even be very useful: if you screw something up, the dangling objects can
 be how you recover your old tree (say, you did a rebase, and realized
-that you really didn't want to - you can look at what dangling objects
+that you really didn't want to--you can look at what dangling objects
 you have, and decide to reset your head to some old dangling state).
 
 For commits, you can just use:
@@ -3088,10 +3088,10 @@ $ git prune
 ------------------------------------------------
 
 and they'll be gone. But you should only run "git prune" on a quiescent
-repository - it's kind of like doing a filesystem fsck recovery: you
+repository--it's kind of like doing a filesystem fsck recovery: you
 don't want to do that while the filesystem is mounted.
 
-(The same is true of "git-fsck" itself, btw - but since
+(The same is true of "git-fsck" itself, btw, but since
 git-fsck never actually *changes* the repository, it just reports
 on what it found, git-fsck itself is never "dangerous" to run.
 Running it while somebody is actually changing the repository can cause
@@ -3425,9 +3425,10 @@ The Workflow
 ------------
 
 High-level operations such as gitlink:git-commit[1],
-gitlink:git-checkout[1] and git-reset[1] work by moving data between the
-working tree, the index, and the object database.  Git provides
-low-level operations which perform each of these steps individually.
+gitlink:git-checkout[1] and gitlink:git-reset[1] work by moving data
+between the working tree, the index, and the object database.  Git
+provides low-level operations which perform each of these steps
+individually.
 
 Generally, all "git" operations work on the index file. Some operations
 work *purely* on the index file (showing the current state of the
@@ -3482,7 +3483,7 @@ You write your current index file to a "tree" object with the program
 $ git write-tree
 -------------------------------------------------
 
-that doesn't come with any options - it will just write out the
+that doesn't come with any options--it will just write out the
 current index into the set of tree objects that describe that state,
 and it will return the name of the resulting top-level tree. You can
 use that tree to re-generate the index at any time by going in the
@@ -3493,7 +3494,7 @@ object database -> index
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
 You read a "tree" file from the object database, and use that to
-populate (and overwrite - don't do this if your index contains any
+populate (and overwrite--don't do this if your index contains any
 unsaved state that you might want to restore later!) your current
 index.  Normal operation is just
 
@@ -3541,7 +3542,7 @@ Tying it all together
 
 To commit a tree you have instantiated with "git-write-tree", you'd
 create a "commit" object that refers to that tree and the history
-behind it - most notably the "parent" commits that preceded it in
+behind it--most notably the "parent" commits that preceded it in
 history.
 
 Normally a "commit" has one parent: the previous state of the tree
@@ -3684,7 +3685,7 @@ Once you know the three trees you are going to merge (the one "original"
 tree, aka the common tree, and the two "result" trees, aka the branches
 you want to merge), you do a "merge" read into the index. This will
 complain if it has to throw away your old index contents, so you should
-make sure that you've committed those - in fact you would normally
+make sure that you've committed those--in fact you would normally
 always do a merge against your last commit (which should thus match what
 you have in your current index anyway).
 
@@ -3704,7 +3705,7 @@ Merging multiple trees, continued
 ---------------------------------
 
 Sadly, many merges aren't trivial. If there are files that have
-been added.moved or removed, or if both branches have modified the
+been addedmoved or removed, or if both branches have modified the
 same file, you will be left with an index tree that contains "merge
 entries" in it. Such an index tree can 'NOT' be written out to a tree
 object, and you will have to resolve any such merge clashes using
@@ -3956,7 +3957,7 @@ Two things are interesting here:
 
 - `get_sha1()` returns 0 on _success_.  This might surprise some new
   Git hackers, but there is a long tradition in UNIX to return different
-  negative numbers in case of different errors -- and 0 on success.
+  negative numbers in case of different errors--and 0 on success.
 
 - the variable `sha1` in the function signature of `get_sha1()` is `unsigned
   char \*`, but is actually expected to be a pointer to `unsigned
@@ -4061,7 +4062,7 @@ $ git branch new     # create branch "new" starting at current HEAD
 $ git branch -d new  # delete branch "new"
 -----------------------------------------------
 
-Instead of basing new branch on current HEAD (the default), use:
+Instead of basing new branch on current HEAD (the default), use:
 
 -----------------------------------------------
 $ git branch new test    # branch named "test"