🍴
gitで現在のブランチを簡単にpush/pullするalias
現在checkoutしているブランチをpush/pullしたい時、毎回ブランチ名を確認して git push/pull origin ブランチ名
のようなコマンドを打つのは面倒。
なので、次に示すようなエイリアスを設定しておくと考えなくて良いので便利。
Push
実は HEAD
(現在のcheckout先) をpushすれば良いので、ブランチ名を調べて入力する必要はない。
例えば main
ブランチをcheckoutした状態で以下を実行すると git push origi main
したのと同義になる
git push origin HEAD
頻出パターンなので .gitconfig
にも定義しておくとさらに便利。
[alias]
psoh = push origin HEAD
psuoh = push origin -u HEAD
Pull
git pull
や git pull origin
のみの実行では、アップストリームブランチが指定されているすべてのブランチがpullされてしまう。
このため、意図したブランチだけがpullされるよう、明示的にブランチ名を指定することが一般には良いと思われますが、こちらも毎回ブランチ名を指定するのは手間である。
そこで、現在checkoutしているブランチ名を調べるのに git rev-parse
を使う。
これは指定したcommitやbranchのコミットHASH値を返すコマンドですが、ここに --abbrev-ref
オプションを渡すことでブランチ名を取得することができる。
例えば main
ブランチをcheckoutした状態で以下を実行すると main
が帰ってくる
git rev-parse --abbrev-ref HEAD
> main
この結果をpullの引数に渡してあげれば良い。
git pull origin $(git rev-parse --abbrev-ref HEAD) # git pull origin main と同義
そしてこれも毎回打つのは大変なのでaliasにしてあげると便利。
[alias]
ploh = !git pull origin $(git rev-parse --abbrev-ref HEAD)
複数のコマンド実行を挟むため、gitコマンド自体のaliasではなくshellのコマンドのaliasとしている(頭の!)のに注意。
Discussion