Hi, I discovered an interesting problem when using `git checkout` to which I couldn't find a good solution. We have an automatic system trying to checkout a branch only when it exists. To do so we check whether `git rev-parse` finds a commit for given branch name: git rev-parse "${BRANCH_NAME}" || git rev-parse "refs/remotes/${UPSTREAM}/${BRANCH_NAME}" Unfortunately somebody used the branch name "add-gcc10" and `git rev-parse` which didn't exist on one repository. However `git rev-parse` also supports to parse the `git-describe` format which resulted in checkout a commit starting with "cc10". We saw a similar problem with disambiguation of tag and branch-name. If there any possibility to enforce that `git checkout` and other commands such `git rev-parse` handle a revision as a specific type (branch, tag, commit-id). Is there something like `git checkout name@{branch}` or `git checkout name@{tag}` similar to other rev-parse format such as `branch@{upstream}`. Best Regards Heiko Böttger