やりたいこと・背景
$ git remote show origin
* remote origin
Fetch URL: git@github.com:vividmuimui/foo.git
Push URL: git@github.com:vividmuimui/foo.git
HEAD branch: main
Remote branches:
bar_branch tracked
$ git branch -r
origin/HEAD -> origin/main
origin/bar_branch
origin/main
上記などのコマンドで表示される HEAD branch: main
や origin/HEAD -> origin/main
の main
の部分を取得したい。
理由としては、リモートリポジトリの設定によって、master
だったり main
だったりする。
これをコマンド一発で取れるようにしたい。
コマンド
$ git branch -r | grep HEAD | cut -d'/' -f3
# main
補足: このコマンドをどう使うか
$ hub compare `git branch -r | grep HEAD | cut -d'/' -f3`...${ここにブランチ名}
git push後に上記のようなコマンドを実行するようにすることで、pushしたらPR作成ページが開かれるので便利。
(VS codeでやったらもっと便利なことはありそうだけど。)
具体的には以下のコマンドを git config として書いて用意している。
# 行末の `newpr` は $0 をうめて、$1に実際の引数を入れるため。これがないと、実際の引数があるときは$0にそれが入るし、実際の引数がないときは$0に`sh`が入ってくるため。
newpr = "!sh -c ': ${1?require remote branch name}; git switch -C temppr; git push origin HEAD:$1; hub compare `git branch -r | grep HEAD | cut -d'/' -f3`...$1' newpr"
git switch -C temppr
あたりは完全に僕のローカルのブランチの運用に依存しているので、上記コマンドを利用される際はよしなに直してください