ShellScript
Git
LinkbalDay 5

git push -u origin branch_name を楽にする

はじめに

この記事はLinkbal Advent Calendar 2018の5日目の記事です。昨日は、私がリンクバルで一番プログラミングできると思っている方のletをconstにできるケース(とlet使用禁止というルールについて)という記事です。

どうも、水野(キンチキ)です。今回はgitについてちょっとしたことを書きます。

git push -u origin branch_name がダルい

gitで新しくブランチ切り、最初にpushするときに git push -u origin branch_name と実行するじゃないですか?

これかなりめんどくさくないですか? いちいちタイプ数が多いんですよ。プライベートならともかく、業務だと頻繁にブランチ切ることありますし。

これを毎回ブランチ切る度に打ってて嫌になったので楽にする関数を作りました。

楽にする関数

以下の関数を .bashrc.zshrc に追加してください。関数名はお好きなもので。

function gpush-u() {
    BRANCH=$(git symbolic-ref --short HEAD | tr -d '\n') # カレントブランチ名を取得
    git push -u origin $BRANCH
}

この関数を定義しておけば、例えばブランチが hogehoge というとき、gpush-u と打つだけで git push -u origin hogehoge が実行されます。

git symbolic-ref --short HEAD はカレントブランチを出力しますが、改行が含まれているため tr -d '\n' で改行を消して変数に入れます。そしてそれを git push -u origin に続けているだけです。

それだけなのですが、個人的にめちゃくちゃ便利なので、ぜひ使ってみてください。

これはわざわざ関数にせずにaliasでもいいかもしれないです。私の書き方がいけないのか、aliasだと上手く動かないことがあったので関数にしたら常に動くようになりました。おそらく、シェル起動時にgitリポジトリ以外のディレクトリなので git symbolic-ref --short HEAD | tr -d '\n' が正常に動かなかったことが原因です。

おわりに

簡単なシェルスクリプトを作ったり、ちょっとしたシェルの設定をするだけでコマンドラインはかなり便利になったりします。面倒に感じることやなんとかしたいと感じることはきっと解決策があるので、ぜひ調べてみてください。

私のかなり拙い.zshrcですが、他にもgitに関する関数など登録しているので、よろしければご覧ください!
dotfiles/.zshrc at master · kinchiki/dotfiles

それではまた。