From: Jay Soffian Date: Wed, 31 Mar 2010 21:59:49 GMT Subject: Re: git branch -a prefixes origin/ branches with remotes/ Message-ID: In-Reply-To: <18137.1270056387@relay.known.net> On Wed, Mar 31, 2010 at 1:26 PM, layer wrote: > In git 1.6.6.1 & 1.6.3.3, "git branch -a" output is like this > > * master >  remotes/origin/foo >  ... > > instead of like this for 1.6.1.3 > > * master >  origin/foo >  ... > > Is this a feature or bug?  I searched the mailing list archives and > announcements couldn't find any reference to this change. Feature. Introduced in 1.6.3: http://article.gmane.org/gmane.comp.version-control.git/116404 See "builtin-branch: improve output when displaying remote branches" > This is important to me because I use the output of "git branch -a" in > scripts. > > I should add that the scripts are merely testing for the existence of > remote tracking branches in the local repo. If there's a better way > to do this, I'm game. Thanks. git branch is a so-called porcelain command, and as you've now been bitten by, the output of porcelain's is subject to change. You probably want git for-each-ref. Aside, the only list of plumbing vs porcelain commands I'm aware of is in the bash-completion script under contrib. See __git_list_porcelain_commands here: http://git.kernel.org/?p=git/git.git;a=blob;f=contrib/completion/git-completion.bash Those are generally commands whose output you do not want to be parsing. All the other git commands installed under git-core are mostly plumbing upon which you can build additional functionality. (Note to git list: there should be a man page that has a single-line summary of each command and states whether the command is plumbing or porcelain. Maybe there is and I just don't know it.) j.