git 操作を扱うプログラムで利用している git コマンド
自動化ツールの条件分岐などに使用している git コマンドです。bash と git 2.x 系で作成しています。
凡例
$ から始まる行 ⇒ コマンド
> から始まる行 ⇒ 出力結果
# から始まる行 ⇒ 筆者からの説明
PATH ⇒ 任意のディレクトリパス
FILE ⇒ 任意のファイル
BRANCH ⇒ 任意のブランチ名
git リポジトリの存在確認
git status はそこが git 管理下であれば結果を標準出力し、そうでなければ標準エラー出力でメッセージを出す。以下のコマンドは、git 管理下にあるパス内では結果は必ず空になる。
$ git -C PATH status -s 2>&1 > /dev/null | awk '{print $1}
# PATH が git 管理下の場合
> (結果なし)
# PATH が git 管理下である場合
> fatal: not a git repository (or any parent up to mount point /)
現在のブランチ名の確認
$ git -C PATH rev-parse --abbrev-ref HEAD
> main
push していないローカルコミットの存在確認
指定したブランチで、ローカルでコミット済みだがリモートに無いコミットを表示する。
$ git -C PATH log --pretty=format:"%h" origin/BRANCH..HEAD
> 73e8891
X.Y.Z か vX.Y.Z 形式のタグから v を抜いて最新のバージョンを抽出
セマンティックバージョニングの形式のタグうち、一番数字の大きいものを抽出する。
タグ付けのタイミングは考慮せず、数字の大きさのみを比較している。
$ git -C PATH tag | sed s/^v//g | sort -t . -n -k1,1 -k2,2 -k3,3 | tail -n1
> 0.0.2
git -C PATH tag
現在のタグのリストを取得sed s/^v//g
先頭の v を削除sort -t . -n -k1,1 -k2,2 -k3,3
X.Y.Z の区切りになっている文字を数字としてソートtail -n1
一番下(最新)の結果を表示