Edited at

Gitのブランチ名を返すエイリアスを設定しなくても地味に捗った

More than 1 year has passed since last update.


はじめに

こちらは

Gitのブランチ名を返すエイリアスを設定したら地味に捗った

のいわゆる訂正記事です。

前回は$(brname)というGitのcurrentのブランチ名を返すaliasを紹介したものの、『この作業ならalias無くてもブランチ名入力する必要ないよ』というツッコミを数件いただきましたので、こちらにまとめておきます。

元記事は想定以上にいいねがついてしまっているので、これはこれで有用だったのかなとも思い、そのまま残しておきます…(あと自分の戒めのためにも)。

※ 以下、$(brname)となっている部分が前回.bashrc(.zshrc)のエイリアスとして紹介されている部分ですね。


git push

.bashrcエイリアス版

git push -u origin $(brname)



エイリアス不要版

git push -u origin HEAD

git push origin HEADはGitの公式でも手軽に同名でoriginにpushするための手軽な方法と紹介されていました。

git-scm.com: git push origin HEAD

こちらは@kappa0923さんにコメントにてツッコミをいただきました。


git diff

.bashrcエイリアス版

git diff $(brname) origin/$(brname) --stat



エイリアス不要版

git diff HEAD @{u} --stat


@{u} (@{upstream}) とは

@{u}とは@{upstream}の省略形で、@{upstream}はさらに<branch name>@{upstream}の<branch name>が指定が無い時はカレントのブランチ指定になるという省略形です。

マニュアルをあたってみると、

git-scm.com: <branchname>@{upstream}, e.g. master@{upstream}, @{u}


The suffix @{upstream} to a branchname (short form <branchname>@{u}) refers to the branch that the branch specified by branchname is set to build on top of (configured with branch.<name>.remote and branch.<name>.merge).


branch.<name>.remoteとbranch.<name>.mergeに設定してあるものを返すという説明っぽいですね。

さらに日本語で上手く説明してある記事を探したのですが下記の記事がしっくりきました。

Gitで特定のローカルブランチをリモートブランチの変更に追従させるワンライナー


<branch name>@{upstream}はそのブランチに対応したupstreamのブランチ名を取得する.


つまるところやはり@{u}でremote上のブランチ名を取得できるようです。

こちらは@turenarさんにコメントにてツッコミいただきました。


git reset

.bashrcエイリアス版

git reset --hard origin/$(brname)



エイリアス不要版

git reset --hard @{u}

こちらも@{u}(@{upstream})で代用できるようです。

こちらも@turenarさんにコメントにてツッコミいただきました。


まとめ

.bashrc(.zshrc)によるエイリアスがなくても


  • 無駄なTypoを防ぐ

  • コピペの手間削減

  • 補完を使うことによりタイプ数も減る

効果が得られることがわかりました。

git pull origin <brname>については今の所は前回のaliasが有用っぽいですが、もしかしたらデフォルトで代用できる何かがあるかもしれません…。

Qiitaのツッコミがなければ、ずっと自分は前回の記事の遠回りな方法を使い続けていたかもしれません。

指摘いただいた皆様ありがとうございましたm(_ _)m