Skip to content

Commit 4cccc3c

Browse files
committed
doc: git-checkout: clarify git checkout <branch>
From user feedback: several users commented that "Local modifications to the files in the working tree are kept, so that they can be committed to the <branch>." didn't seem accurate to them, since `git checkout <branch>` will often fail. One user also thought that "... and by pointing HEAD at the branch" was something that _they_ had to do somehow ("How do I point HEAD at a branch?") rather than a description of what the `git checkout` operation is doing for them. Explain when `git checkout <branch>` will fail and clarify that "pointing HEAD at the branch" is part of what the command does. 6 users commented that the "You could omit <branch>..." section is extremely confusing. Explain this in a much more direct way. Signed-off-by: Julia Evans <[email protected]>
1 parent e52787c commit 4cccc3c

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

Documentation/git-checkout.adoc

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,12 @@ DESCRIPTION
2828
See ARGUMENT DISAMBIGUATION below for how Git decides which one to do.
2929
3030
`git checkout [<branch>]`::
31-
To prepare for working on _<branch>_, switch to it by updating
32-
the index and the files in the working tree, and by pointing
33-
`HEAD` at the branch. Local modifications to the files in the
34-
working tree are kept, so that they can be committed to the
35-
_<branch>_.
31+
Switch to _<branch>_. This sets the current branch to _<branch>_ and
32+
updates the files in your working directory. Files which are
33+
identical in _<branch>_ and your current commit are left unchanged
34+
so that you can keep your uncommitted changes to those files.
35+
This will not overwrite uncommitted changes to a file: instead it
36+
will fail without making any changes.
3637
+
3738
If _<branch>_ is not found but there does exist a tracking branch in
3839
exactly one remote (call it _<remote>_) with a matching name and
@@ -42,10 +43,8 @@ exactly one remote (call it _<remote>_) with a matching name and
4243
$ git checkout -b <branch> --track <remote>/<branch>
4344
------------
4445
+
45-
You could omit _<branch>_, in which case the command degenerates to
46-
"check out the current branch", which is a glorified no-op with
47-
rather expensive side-effects to show only the tracking information,
48-
if it exists, for the current branch.
46+
Running `git checkout` without specifying a branch has no effect except
47+
to print out the tracking information for the current branch.
4948
5049
`git checkout (-b|-B) <new-branch> [<start-point>]`::
5150

0 commit comments

Comments
 (0)