From: Junio C Hamano Date: Mon, 27 Aug 2012 17:03:39 GMT Subject: Re: git checkout -t -B Message-ID: <7vk3wks1w4.fsf@alter.siamese.dyndns.org> In-Reply-To: Nguyen Thai Ngoc Duy writes: > On Mon, Aug 27, 2012 at 1:38 AM, Junio C Hamano wrote: >> 乙酸鋰 writes: >> >>> git checkout -t -B origin/abcde >>> works >>> >>> but >>> git checkout -B -t origin/abcde >>> does not. >>> >>> Could you document the order of parameters or fix the behaviour? >> >> It is crystal clear that -b/-B/--orphan must be followed by the name >> of the branch you are creating from the SYNOPSIS section of the >> documentation. > > Yet it's not very clear from the error message: > > fatal: git checkout: updating paths is incompatible with switching branches. > Did you intend to checkout 'origin/abcde' which can not be > resolved as commit? > > I wonder if we should reject -t as a value of -[Bb] by adding new > parseopt flag to reject values starting with '-'. You should be able to cope with other invalid branch names in the same codepath, but your approach would not help at all if the user said "git checkout -B q..f origin/abcde". Futzing with parseopt is not a reasonable answer to this one. Ideally you would want fatal: "-t" is not an acceptable name for a branch in this case; if it is cumbersome to arrange, at the very least, updating paths is incompatible with checking out the branch "-t". would be clearer.