> git checkout [--detach|-b] <commit-ish>
Set HEAD to a new place and sync the working-directory/index to it.
> git checkout <paths>
Copy paths from the index to the working directory.
> git checkout <tree-ish> <paths>
Copy paths from a given commit to the working directory.
This means that "git checkout HEAD file" is different from "git checkout file".
Similarly, `git reset` has 2 modes:
> git reset <tree-ish> <paths>
Copy paths from a given commits to the index, leaving the cwd unchanged.
> git reset [--soft | --mixed | --hard] <commit>
Set *HEAD to a new place, and optionally sync the working directory/index to it.
This is obviously terrible, but changing the names now might be worse.
> git checkout [--detach|-b] <commit-ish>
Set HEAD to a new place and sync the working-directory/index to it.
> git checkout <paths>
Copy paths from the index to the working directory.
> git checkout <tree-ish> <paths>
Copy paths from a given commit to the working directory.
This means that "git checkout HEAD file" is different from "git checkout file".
Similarly, `git reset` has 2 modes:
> git reset <tree-ish> <paths>
Copy paths from a given commits to the index, leaving the cwd unchanged.
> git reset [--soft | --mixed | --hard] <commit>
Set *HEAD to a new place, and optionally sync the working directory/index to it.
This is obviously terrible, but changing the names now might be worse.