From: Harald Nordgren Date: Fri, 30 Jan 2026 10:59:54 GMT Subject: Re: [PATCH] revisions: add @{default} shorthand for default branch Message-ID: <20260130105954.59636-1-haraldnordgren@gmail.com> In-Reply-To: Thanks for your comments! > But @{upstream} and @{push} are inherently very different from what > you are adding, aren't they? Asking for topic1@{upstream} and > topic2@{upstream} makes quite a lot of sense, because the meaning of > @{upstream} depends on "which branch's upstream are you talking > about???". But I suspect that asking for topic1@{default} and > expect it would be different from topic2@{default} is nonsense, as > "the default" is not per branch but is an attribute of a repository. > In other words, @{default} may by itself be a nonsense > query. Are you rejecting a non-empty that may appear > before @{default} as an error? I will update the code to treat 'new-branch@{default}' as nonsense, it's not a case I thought about, and would never use 😅 > After cloning an upstream project, those who dislike the local > branch name 'master' often rename it to something else, like > > $ git branch -m master main I have never heard about anyone doing that. Isn't it more expected that people keep whatever branch is on the remote? But regardless, I hope there is a way to still make @{default} map to whatever your renamed your default branch to. > Given > that the names of local branches are under control of the local end > user and not upstream projects, I would imagine that the primary > branch used by a user is of per-user nature, not per repository. In > other words, instead of having to do "git branch -m" after cloning, > you may do "git config --global init.defaultBranch" just once and > keep using the same default name. My ratio on cloning other people's repo vs. create new repos is likely 999/1, so I'm given the default names that maintainer chose. I have default branches called 'master', 'main' and 'develop'. Yes it's possible to rename, but what this feature does is open up the convenience of not having to bother with that. I have this script that I run many times a day. However it doesn't work when remote is not called 'origin', so I have another version for 'upstream', etc: git checkout $(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@') That's uneccessary overhead, that could now be replaced with: git checkout @{default} Harald