🍴

gitで現在のブランチを簡単にpush/pullするalias

2023/11/01に公開

現在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