Jeff King <p...@peff.net> writes:
> On Fri, Apr 19, 2013 at 12:50:48PM -0500, Jed Brown wrote:
>> Jeff King <p...@peff.net> writes:
>> > Try "git branch --merged master" to get a list of branches that have
>> > already been merged.
>> That's what I use, but I was hoping for something more precise. For
>> example, a branch that started at 'maint' would show up there, but its
>> integration hasn't completed until it makes it back to 'maint'.
> Yeah, git has no way of knowing that. You can tell it by asking "git
> branch --merged maint" and looking for such topics, of course, but I
> think you are trying to remove as much thinking as possible from the
> So what is the clue that you would like to use to know that the branch
> is stale. Deletion of the branch on the remote?
I was hoping for ("has an upstream set" AND "upstream branch deleted").
> For that, I don't think there is a single command. You can do "git push
> --dry-run --all" and look for new branches that would be pushed, but
> that is kind of hacky. The answer you want is:
> comm -23 \
> <(git for-each-ref --format='%(refname:short)' refs/heads) \
> <(git for-each-ref --format='%(refname:short)' refs/remotes/origin |
> sed s,origin/,,)
This also finds my private branches that I just haven't pushed yet. The
following has what I think are good semantics.
git for-each-ref --format='%(refname:short) %(upstream)' refs/heads |
while read ref upstream; do
test -n "$upstream" && (git show-ref -q --verify "$upstream" || echo $ref)
FWIW, Git sorts non-alpha characters differently from 'sort'. This
means that Git output can't be sent to comm without first '| sort'.
$ git branch xy
$ git branch x-y
$ git branch
$ git branch | sort
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html