TOP

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

    Written by addshlab