# git checkout -b -t

4 messages from 2009-06-02 to 2009-06-02. Participants: John Tapsell, Junio C Hamano, Matthieu Moy, Michael J Gruber.
Thread: https://gitlist.dev/t/19637

## John Tapsell, 2009-06-02 14:49

Subject: git checkout -b -t
Message-ID: <43d8ce650906020749r36a0cceao20dc54d1446a6ea@mail.gmail.com>
URL: https://gitlist.dev/e/43d8ce650906020749r36a0cceao20dc54d1446a6ea%40mail.gmail.com

```
Hey all,

  I've become the "guy to ask about git" in my company and people are
always getting into a mess with git.  So in turn I try to get git to
be a more friendly.  Today someone had a problem.  Basically they had
done:

$ git checkout -t origin/mybranch
fatal: git checkout: --track and --no-track require -b

So they do exactly what it tells them:
$ git checkout -b -t origin/mybranch
Switched to a new branch "-t"

doh

How can we make this less easy for people to shoot themselves in the
foot?  The behavior of -t has changed recently iirc, so I think that
problem has gone away?

Also:
$ git branch -D -t

Doesn't work.  I can see why, but it does make my life difficult :-D

John

```

## Junio C Hamano, 2009-06-02 15:04

Subject: Re: git checkout -b -t
Message-ID: <7vd49mhe39.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vd49mhe39.fsf%40alter.siamese.dyndns.org
In-Reply-To: <43d8ce650906020749r36a0cceao20dc54d1446a6ea@mail.gmail.com>

```
John Tapsell <johnflux@gmail.com> writes:

> $ git checkout -t origin/mybranch
> fatal: git checkout: --track and --no-track require -b
>
> So they do exactly what it tells them:
> $ git checkout -b -t origin/mybranch
> Switched to a new branch "-t"
>
> doh
>
> How can we make this less easy for people to shoot themselves in the
> foot?

 (1) Explain things in terms of semantics, not in terms of "brainless
     cut&paste" operations.

 (2) Avoid telling them what to do in the error messages, instead why what
     they did is an error.

E.g. "--track/--no-track does not make sense if you are not creating a new
branch" would be far less confusing in this particular case.

```

## Matthieu Moy, 2009-06-02 15:05

Subject: Re: git checkout -b -t
Message-ID: <vpqbpp67k18.fsf@bauges.imag.fr>
URL: https://gitlist.dev/e/vpqbpp67k18.fsf%40bauges.imag.fr
In-Reply-To: <43d8ce650906020749r36a0cceao20dc54d1446a6ea@mail.gmail.com>

```
John Tapsell <johnflux@gmail.com> writes:

> $ git branch -D -t
>
> Doesn't work.

Not really answering the question, but "git branch -D -- -t" should work.

-- 
Matthieu

```

## Michael J Gruber, 2009-06-02 15:25

Subject: Re: git checkout -b -t
Message-ID: <4A254481.3020104@drmicha.warpmail.net>
URL: https://gitlist.dev/e/4A254481.3020104%40drmicha.warpmail.net
In-Reply-To: <43d8ce650906020749r36a0cceao20dc54d1446a6ea@mail.gmail.com>

```
John Tapsell venit, vidit, dixit 02.06.2009 16:49:
> Hey all,
> 
>   I've become the "guy to ask about git" in my company and people are
> always getting into a mess with git.  So in turn I try to get git to
> be a more friendly.  Today someone had a problem.  Basically they had
> done:
> 
> $ git checkout -t origin/mybranch
> fatal: git checkout: --track and --no-track require -b
> 
> So they do exactly what it tells them:
> $ git checkout -b -t origin/mybranch
> Switched to a new branch "-t"
> 
> doh
> 
> How can we make this less easy for people to shoot themselves in the
> foot?  The behavior of -t has changed recently iirc, so I think that
> problem has gone away?

git 1.6.1 and above contains DWIMery which, in the case above, would
automatically behave like

git checkout -t origin/mybranch -b mybranch

which complains in case 'mybranch' exists already, without pointing at
'-b', though. Do you think this creates a new type of head aches for
your patients?

> 
> Also:
> $ git branch -D -t
> 
> Doesn't work.  I can see why, but it does make my life difficult :-D
> 
> John

```
