Willem Verstraeten <willem.verstraeten@xxxxxxxxx> writes: > git checkout -b main #reports a fatal error, as expected This is expected because "main" already exists, not because "main" is checked out elsewhere. > git checkout -f main origin/main #also reports a fatal error, as expected This is expected because origin/main is taken as pathspec, and it is a request to checkout the paths that match the pathspec out of the named tree-ish (i.e., "main"), even when these paths have local changes, but you do not have paths that match "origin/main". The failure is not because "main" is checked out elsewhere. A slight variant of the command git checkout -f -b main origin/main still fails for the same reason as the first of your examples above. It is a tangent, but I suspect this failure may be a bit unexpected. In this example, "-f"orce could be overriding the usual failure from "-b" to switch to a branch that already exists, but that is what "-B" does, and "-f -b" does not work as a synonym for "-B". In any case, these example you marked "fail as expected" do fail as expected, but they fail for reasons that have nothing to do with the protection of branches that are used in other worktrees. > git checkout -B main origin/main # ----> this succeeds, which is > unexpected <---- I agree this may be undesirable. But it makes sort of sense, because "-B" is a forced form of "-b" (i.e., it tells git: even when "-b" would fail, take necessary measures to make it work), and we can view that it is part of "forcing" to override the protection over branches that are used elsewhere. I guess we could change the behaviour so that git checkout -B <branch> [<start-point>] fails when <branch> is an existing branch that is in use in another worktree, and allow "-f" to be used to override the safety, i.e., git checkout -f -B <branch> [<start-point>] would allow the <branch> to be repointed to <start-point> (or HEAD) even when it is used elsewhere. Thoughts, whether they agree or disagree with what I just said, by other experienced contributors are very much welcome, before I can say "patches welcome" ;-). Willem, thanks for raising the issue.