Documentation: Describe other situations where -z affects git diff
[gitweb.git] / Documentation / git-checkout.txt
index 223ea9caef4d0ca875768db47e03f5c6cb71354f..37c1810e3fc8424868333a22094107e99764fc37 100644 (file)
@@ -8,24 +8,25 @@ git-checkout - Checkout a branch or paths to the working tree
 SYNOPSIS
 --------
 [verse]
-'git checkout' [-q] [-f] [-t | --track | --no-track] [-b <new_branch> [-l]] [-m] [<branch>]
+'git checkout' [-q] [-f] [-m] [<branch>]
+'git checkout' [-q] [-f] [-m] [-b <new_branch>] [<start_point>]
 'git checkout' [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <paths>...
+'git checkout' --patch [<tree-ish>] [--] [<paths>...]
 
 DESCRIPTION
 -----------
 
 When <paths> are not given, this command switches branches by
-updating the index and working tree to reflect the specified
-branch, <branch>, and updating HEAD to be <branch> or, if
-specified, <new_branch>.  Using -b will cause <new_branch> to
-be created; in this case you can use the --track or --no-track
-options, which will be passed to `git branch`.
+updating the index, working tree, and HEAD to reflect the specified
+branch.
 
-As a convenience, --track will default to creating a branch whose
-name is constructed from the specified branch name by stripping
-the first namespace level.
+If `-b` is given, a new branch is created and checked out, as if
+linkgit:git-branch[1] were called; in this case you can
+use the --track or --no-track options, which will be passed to `git
+branch`.  As a convenience, --track without `-b` implies branch
+creation; see the description of --track below.
 
-When <paths> are given, this command does *not* switch
+When <paths> or --patch are given, this command 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
@@ -45,9 +46,11 @@ file can be discarded to recreate the original conflicted merge result.
 OPTIONS
 -------
 -q::
+--quiet::
        Quiet, suppress feedback messages.
 
 -f::
+--force::
        When switching branches, proceed even if the index or the
        working tree differs from HEAD.  This is used to throw away
        local changes.
@@ -62,22 +65,12 @@ entries; instead, unmerged entries are ignored.
 
 -b::
        Create a new branch named <new_branch> and start it at
-       <branch>.  The new branch name must pass all checks defined
-       by linkgit:git-check-ref-format[1].  Some of these checks
-       may restrict the characters allowed in a branch name.
+       <start_point>; see linkgit:git-branch[1] for details.
 
 -t::
 --track::
-       When creating a new branch, set up configuration so that 'git-pull'
-       will automatically retrieve data from the start point, which must be
-       a branch. Use this if you always pull from the same upstream branch
-       into the new branch, and if you don't want to use "git pull
-       <repository> <refspec>" explicitly. This behavior is the default
-       when the start point is a remote branch. Set the
-       branch.autosetupmerge configuration variable to `false` if you want
-       'git checkout' and 'git branch' to always behave as if '--no-track' were
-       given. Set it to `always` if you want this behavior when the
-       start point is either a local or remote branch.
+       When creating a new branch, set up "upstream" configuration. See
+       "--track" in linkgit:git-branch[1] for details.
 +
 If no '-b' option is given, the name of the new branch will be
 derived from the remote branch.  If "remotes/" or "refs/remotes/"
@@ -90,12 +83,12 @@ guessing results in an empty name, the guessing is aborted.  You can
 explicitly give a name with '-b' in such a case.
 
 --no-track::
-       Ignore the branch.autosetupmerge configuration variable.
+       Do not set up "upstream" configuration, even if the
+       branch.autosetupmerge configuration variable is true.
 
 -l::
-       Create the new branch's reflog.  This activates recording of
-       all changes made to the branch ref, enabling use of date
-       based sha1 expressions such as "<branchname>@\{yesterday}".
+       Create the new branch's reflog; see linkgit:git-branch[1] for
+       details.
 
 -m::
 --merge::
@@ -123,23 +116,38 @@ the conflicted merge in the specified paths.
        "merge" (default) and "diff3" (in addition to what is shown by
        "merge" style, shows the original contents).
 
+-p::
+--patch::
+       Interactively select hunks in the difference between the
+       <tree-ish> (or the index, if unspecified) and the working
+       tree.  The chosen hunks are then applied in reverse to the
+       working tree (and if a <tree-ish> was specified, the index).
++
+This means that you can use `git checkout -p` to selectively discard
+edits from your current working tree.
+
+<branch>::
+       Branch to checkout; if it refers to a branch (i.e., a name that,
+       when prepended with "refs/heads/", is a valid ref), then that
+       branch is checked out. Otherwise, if it refers to a valid
+       commit, your HEAD becomes "detached" and you are no longer on
+       any branch (see below for details).
++
+As a special case, the `"@\{-N\}"` syntax for the N-th last branch
+checks out the branch (instead of detaching).  You may also specify
+`-` which is synonymous with `"@\{-1\}"`.
+
 <new_branch>::
        Name for the new branch.
 
+<start_point>::
+       The name of a commit at which to start the new branch; see
+       linkgit:git-branch[1] for details. Defaults to HEAD.
+
 <tree-ish>::
        Tree to checkout from (when paths are given). If not specified,
        the index will be used.
 
-<branch>::
-       Branch to checkout (when no paths are given); may be any object
-       ID that resolves to a commit.  Defaults to HEAD.
-+
-When this parameter names a non-branch (but still a valid commit object),
-your HEAD becomes 'detached'.
-+
-As a special case, the `"@\{-N\}"` syntax for the N-th last branch
-checks out the branch (instead of detaching).  You may also specify
-`-` which is synonymous with `"@\{-1\}"`.
 
 
 Detached HEAD