4

リポジトリから最新のタグをチェックアウトするための Git コマンド エイリアスがあります。

~/.gitconfig:

checkout-latest = !git checkout $(git describe --tags `git rev-list --tags --max-count=1`)

したがって、次のように適切にタグ付けされたリポジトリで使用できます。

$ git checkout-latest

checkout コマンドのコマンド エイリアスがあります。

~/.gitconfig:

co = checkout

checkout-latest、チェックアウトのコマンド エイリアスでは機能しません。

$ git co-latest
git: 'co-latest' is not a git command. See 'git --help'.

プログラムで決定された latest タグを指すタグ エイリアスとして latest を使用できるように Git を構成するにはどうすればよいですか? 次のように使用したいと思います。

$ git checkout latest

$ git co latest

目的のバリアントでは、サブコマンドとタグの間にダッシュがないことに注意してください。

4

3 に答える 3

2

私が考えることができるこの種のことに対する唯一の解決策は、git引数に基づいて「ディスパッチ」を行うシェル関数です。

このようなもの:

git() {
    if [ "$1" != checkout ] || [ "$#" -ne 2 ]; then
        git "$@"
        return
    fi

    local lastrev lasttag

    case $2 in
        :latest)
            lastrev=$(git rev-list --tags --max-count=1)
            set -- checkout "$(git describe --tags "$lastrev")"
        ;;
    esac

    git "$@"
}

タグエイリアスは、通常の参照が安全であるため無効である必要があり、したがってcheck-ref-format.

この構成により、case ステートメントを介して任意のタグ「エイリアス」を追加できます。

この関数は、タグ「エイリアス」を使用する場合に使用できる引数に関して非常に制限されています。具体的には、渡すことはできません。コマンドgit checkout <alias>. _ すべての有効な組み合わせを解析するgit checkoutことは、今のところ気にするのが難しすぎます (おそらく実行できますが)。

于 2014-12-17T22:29:29.157 に答える
0

Git エイリアスは他のエイリアスを参照できません。

ただし、間接的な別のレイヤーを使用してこれを実現できます。

co-latest = !git checkout-latest "$@"
于 2014-12-17T18:46:28.387 に答える