On Tue, Jan 17, 2023 at 10:52 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Carlo Marcelo Arenas Belón <carenas@xxxxxxxxx> writes: > > > As reflected on the tests, this will change the behaviour of those > > commands when they are invoked in a worktree that has that requested > > branch checked out, as that matches the logic used by branch, is safer > > (assuming both commands are user facing) and can be overriden with an > > existing flag. > > ... meaning you can "--force", or something else? Allowing an > existing option to be used as the safety valve does make sense, > especially if the option is something users are already familiar > with (like "--force") and naturally expected to work. the following is the way to override: $ git checkout --ignore-other-worktrees -B foo > There might need an documentation update. Back when "checkout -b" > and "branch" was written, there wasn't "multiple worktrees connected > to a single repository" hence there was no need to provide safety > against checking out the same branch in two different places. "git > branch" might have learned to give that safety while "git checkout > -b", which _ought_ to be equivalent to "git branch" followed by "git > checkout", might have forgot to do so. Not sure if it was originally forgotten, but it is definitely working now; this change only fixes the uppercase (-B) version. > After this change, it may > still be correct to say that "checkout -b" is equivalent to "branch" > followed by "checkout", but if the documentation to "branch" talks > about this safety, it probably deserves to be mentioned in the > documentation to "checkout -b", as well, if only to give an appropriate > place to talk about how to override it "with an existing flag". Interestingly, when the flag was added in 1d0fa898ea (checkout: add --ignore-other-wortrees, 2015-01-03), it was only added to `checkout`. `git branch` has no flag and will die even when `-f` is used Carlo