位置パラメータ付きのGitエイリアス 質問する

位置パラメータ付きのGitエイリアス 質問する

基本的に私はエイリアスを試みています:

git files 9fa3

...コマンドを実行するには:

git diff --name-status 9fa3^ 9fa3

しかし、git は alias コマンドに位置パラメータを渡さないようです。私は以下を試しました:

[alias]
    files = "!git diff --name-status $1^ $1"
    files = "!git diff --name-status {1}^ {1}"

...他にもいくつか試しましたが、どれもうまくいきませんでした。

悪化したケースは次のようになります。

$ git echo_reverse_these_params a b c d e
e d c b a

...どうすればこれを機能させることができるでしょうか?

ベストアンサー1

シェル関数がこれに役立ちます:

[alias]
    files = "!f() { git diff --name-status \"$1^\" \"$1\"; }; f"

のないエイリアスは!Git コマンドとして扱われます。例: commit-all = commit -a

!を使用すると、シェル内で独自のコマンドとして実行されるため、次のようなより強力なマジックを使用できます。

UPD
コマンドはリポジトリのルートで実行されるため、${GIT_PREFIX}コマンド内のファイル名を参照するときに変数を使用できます。

おすすめ記事