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
    一番下(最新)の結果を表示