Git aliases using arbitrary default branch names

I have a very simple git alias which shows me what's changed on my feature branch compared to the main branch (which is probably what I'm about to target with a PR/merge):

      ld = diff master

This only works if "master" is the name of the default branch in your current repo, and this is decreasingly common.

  % git ld
  fatal: ambiguous argument 'master': unknown revision or path not in the working tree.

One solution is to call git symbolic-ref on the "origin" remote HEAD.

  % git symbolic-ref refs/remotes/origin/HEAD

This is just swapping one assumption for another though: I'm now assuming that there's a remote named origin instead of a branch named master. However, that assumption holds true (for me) everywhere, and seems likely to be true more often than the default branch being named master.

Here's what that bit of my .gitconfig looks like now:

      ld = "!git diff $(git symbolic-ref refs/remotes/origin/HEAD | awk -F '/' '{print $4}')"