LoginSignup
6
2

More than 3 years have passed since last update.

git push -u origin branch_name を楽にする

Last updated at Posted at 2018-12-05

はじめに

この記事は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' が正常に動かなかったことが原因です。

【追記】 楽にするalias

コメント頂いた以下のコマンドならaliasでいけます。

# OK
alias gpush-u='git symbolic-ref --short HEAD | tr -d "\n" | xargs -I@ git push -u origin @'

# NG
alias gpush-u='git push -u origin `git symbolic-ref --short HEAD | tr -d "\n"`'

NGの方だと、バッククォートで囲われているところがコマンドを読み込んだ時(not gpush-u を実行した時)に評価されて git symbolic-ref --short HEAD | tr -d "\n" の部分が動かないのですね。

@YHiroyuki さんありがとうございます!

おわりに

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

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

それではまた。

6
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2