What did you do before the bug happened? (Steps to reproduce your issue) 1. `cd` into any git repo that has at least one commit. 2. Identify the current branch, say main 3. $ git branch foo # a new branch 4. $ git worktree add ../new_worktree foo 5. $ cd ../new_worktree 6. $ git checkout -B master HEAD What did you expect to happen? (Expected behavior) git prints out "Fatal: 'main' is already checked out at ..." (or similar message that informs me that I'm not allowed to doubly checkout one branch) What happened instead? (Actual behavior) The new_worktree successfully changes its current branch to master, which is already held by another worktree. Anything else you want to add: https://www.git-scm.com/docs/git-checkout#Documentation/git-checkout.txt-emgitcheckoutem-b-Bltnew-branchgtltstart-pointgt According to the documentation, "git checkout -B BRANCH START" is the transactionally equivalent of: git branch -f BRANCH START git checkout BRANCH When I ran the first command in place of the step 6 of the above reproducing procedure, git refused to carry on; I suppose that this is the intended behavior for "git checkout -B". [System Info] git version: git version 2.39.0 cpu: arm64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh feature: fsmonitor--daemon uname: Darwin 21.6.0 Darwin Kernel Version 21.6.0: Sun Nov 6 23:31:13 PST 2022; root:xnu-8020.240.14~1/RELEASE_ARM64_T6000 arm64 compiler info: clang: 14.0.0 (clang-1400.0.29.202) libc info: no libc information available $SHELL (typically, interactive shell): /opt/homebrew/bin/bash [Enabled Hooks] not run from a git repository - no hooks to show