Torsten Bögershausen <tboegi <at> web.de> writes:

>Do you think you can write a patch to improve the documentation ?

Here is my attempt, but it is only a starting point.

diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt
index d263a56..ee25354 100644
--- a/Documentation/git-checkout.txt
+++ b/Documentation/git-checkout.txt
@@ -3,7 +3,7 @@ git-checkout(1)

 NAME
 ----
-git-checkout - Checkout a branch or paths to the working tree
+git-checkout - Overwrite working tree files with a given branch

 SYNOPSIS
 --------
@@ -17,10 +17,11 @@ SYNOPSIS

 DESCRIPTION
 -----------
-Updates files in the working tree to match the version in the index
-or the specified tree.  If no paths are given, 'git checkout' will
-also update `HEAD` to set the specified branch as the current
-branch.
+Updates, creates, or overwrites files in the working tree to match the
+version in the index or the specified tree.  If no paths are given,
+'git checkout' will also update `HEAD` to set the specified branch as
+the current branch, and will keep local changes.  If paths are given,
+'git checkout' will unconditionally overwrite local changes.

 'git checkout' <branch>::
        To prepare for working on <branch>, switch to it by updating
@@ -81,21 +82,24 @@ Omitting <branch> detaches HEAD at the tip of the
current branch.
 'git checkout' [-p|--patch] [<tree-ish>] [--] <pathspec>...::

        When <paths> or `--patch` are given, 'git checkout' does *not*
-       switch branches.  It updates the named paths in the working tree
-       from the index file or from a named <tree-ish> (most often a
-       commit).  In this case, the `-b` and `--track` options are
-       meaningless and giving either of them results in an error.  The
-       <tree-ish> argument can be used to specify a specific tree-ish
-       (i.e.  commit, tag or tree) to update the index for the given
-       paths before updating the working tree.
-+
-The index may contain unmerged entries because of a previous failed merge.
-By default, if you try to check out such an entry from the index, the
-checkout operation will fail and nothing will be checked out.
-Using `-f` will ignore these unmerged entries.  The contents from a
-specific side of the merge can be checked out of the index by
-using `--ours` or `--theirs`.  With `-m`, changes made to the working tree
-file can be discarded to re-create the original conflicted merge result.
+       switch branches.  It overwrites the named paths in the working
+       tree from the index file or from a named <tree-ish> (most
+       often a commit).  Unlike other modes, local modifications to
+       the files in the working tree are *not* kept.
+
+        In this case, the `-b` and `--track` options are meaningless
+       and giving either of them results in an error.  The <tree-ish>
+       argument can be used to specify a specific tree-ish (i.e.
+       commit, tag or tree) to update the index for the given paths
+       before updating the working tree.  + The index may contain
+       unmerged entries because of a previous failed merge.  By
+       default, if you try to check out such an entry from the index,
+       the checkout operation will fail and nothing will be checked
+       out.  Using `-f` will ignore these unmerged entries.  The
+       contents from a specific side of the merge can be checked out
+       of the index by using `--ours` or `--theirs`.  With `-m`,
+       changes made to the working tree file can be discarded to
+       re-create the original conflicted merge result.

 OPTIONS
 -------
@@ -110,7 +114,9 @@ OPTIONS
        local changes.
 +
 When checking out paths from the index, do not fail upon unmerged
-entries; instead, unmerged entries are ignored.
+entries; instead, unmerged entries are ignored.  (Note that when
+checking out paths, local changes are thrown away whether or not
+this flag is given.)

 --ours::
 --theirs::
@@ -481,10 +487,10 @@ $ git checkout hello.c            <3>
 ------------
 +
 <1> switch branch
-<2> take a file out of another commit
-<3> restore hello.c from the index
+<2> take a file out of another commit, overwriting any local changes
+<3> restore hello.c from the index (would overwrite it if it existed)
 +
-If you want to check out _all_ C source files out of the index,
+If you want to revert _all_ C source files out of the index,
 you can say
 +
 ------------
@@ -492,7 +498,7 @@ $ git checkout -- '*.c'
 ------------
 +
 Note the quotes around `*.c`.  The file `hello.c` will also be
-checked out, even though it is no longer in the working tree,
+created, even though it is no longer in the working tree,
 because the file globbing is used to match entries in the index
 (not in the working tree by the shell).

Reply via email to