git pushの際に面倒なことを全部自動化する

2024/01/19に公開

普段意識しないset-upstreamの仕組み復習

全て手動でやる

git で作ったローカルブランチをpushしてremoteに上げたい時
全手動で何も省略せずpushする際は下記の様に実行します。

git push origin <ローカルのブランチ名>:<リモートのブランチ名>
git push origin <ブランチ名> # (ローカルブランチ名 = リモートブランチ名の時)

up-stream(対応するリモートブランチ)を指定する

毎回ローカルブランチと実行するのは面倒なので、
ローカルブランチごとに、リモートのブランチを対応付けることができます。

git branch --set-upstream-to origin/<リモートのブランチ名>
git branch -u origin/<リモートのブランチ名> #(省略形)

上記を1度実行して、up-streamを設定しておくことで、今度から、

git push

だけ実行するだけで、登録してある remoteブランチ に対してpushを行なってくれます。

初回push時に同時にupstreamを設定する

push初回時にset-upstreamを同時にする便利コマンドもあります。

git push -u origin <ブランチ> # 初回
git push # 2回目以降

本題

初回の "-u" も 省略する

2022年の6月にリリースされた、Git 2.37.0から、
git configの項目の中に、push時にsetupstreamを自動で設定してくれる項目ができました。
それを下記の様に設定すると、

git config --global --add --bool push.autoSetupRemote true

初回から、

git push 

と実行するだけで、set-upstreamを<現在のローカルブランチ名> = <リモートブランチ名>として設定してくれます。

余談

ちなみに、この git 2.37がリリースされるまで自分はどうしてたかというと、

git confignの中に、push時の挙動を設定できる項目があり、
これを使って、

git config --global push.default current

と設定しておくと、

<現在のローカルブランチ>と同じ名前でリモートブランチにpushするという設定になります。

なので、初回から

git push

とすると、自動で、

git push origin <現在のブランチ名>

を実行するのと同じになります。

ただ、この場合、ブランチは upstreamが設定されておらず、
pushするたびに、どのブランチにpushすべきかというのを実行時に判断をすることになるので、
初回push時に git pushだけで実行できるのは変わらなかったのですが、
upstreamが設定されてないという状況で少しだけ微妙でした。

参考: https://git-scm.com/docs
参考: https://qiita.com/misopeso/items/ede49b661cc7ad30528a
参考: https://shogo82148.github.io/blog/2022/08/11/2022-08-11-git-push-auto-setup-remote/

Discussion