Re: How to use @{-1} with push?
From: Robert Dailey <hidden>
Date: 2016-06-15 23:09:04
On Fri, Mar 25, 2016 at 1:58 PM, Junio C Hamano [off-list ref] wrote:
I thought these are clear from their documentation. "push" works on
refnames, "branch" works on branch names. "push" takes an branch
name as a short-hand and adds refs/heads/ when it makes sense, but
because it does not make any sense for "git branch" to create a
"branch" in a random place in refs/ (e.g. "refs/tags/foo" is not a
branch), it takes "foo" (i.e. the name of the branch, whose
underlying ref is "refs/heads/foo").
So
ref=$(git rev-parse --symbolic-full-name "$2") &&
case "$ref" in
'') echo >&2 "No such thing $2"; exit 1 ;;
refs/heads/*) ref=${ref#refs/heads/} ;;
*) echo >&2 "That's not a branch $2"; exit 2 ;;
esac &&
git push "$1" "refs/heads/$ref" &&
git branch -D "$ref"
or something?Reading the git documentation feels a lot like reading the C++ standard. Not the best place to go to learn something. Some of the terminology is very detail-oriented. For example, until you explained the differences between push & branch, I always thought "ref" and "branch" were interchangeable. But now it's clear to me that a branch is just a type of ref, but refs are not branches. Also as a Windows developer, I am not as well-versed in bash scripting as I'd like to be. So thanks for your explanation, it is clear now.