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). ��.n��������+%������w��{.n��������n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�