Issue
What difference between next git
commands:
git checkout branch
git checkout branch .
git checkout . #<-- used at the branch
Why when I checkout different branches into different folders with first one I missed some files.
But when I am using second command, everything is ok?
Solution
git checkout
(1) does very different things whether given path specifier or not.
- With branch specifier only (
git checkout branch
) it will switch current working directory to specified branch, keeping local changes if possible and failing otherwise. If you already are onbranch
, it will do nothing at all. It only modifies files in the working directory that differ betweenHEAD
andbranch
and fails if any of them has local modifications (indexed or not). - With path specifier it will overwrite the all matching files (all files match
.
) with specified content:- With path specifier only (
git checkout .
) it writes content from index. That is, it undoes unstaged local modification. To undo staged modifications, usegit reset
with path specifier. - With both branch and path specifiers (
git checkout branch .
) it writes content in specified revision. It will not modify whereHEAD
points, so ifbranch
is different fromHEAD
, there will be unstaged changes afterwards.
- With path specifier only (
Note, that the man page distinguishes additional cases for use of the -b/–branch option and -p/–patch option, but those are mostly straightforward extensions of the above cases.
Answered By – Jan Hudec
This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0