基本的に私はエイリアスを試みています:
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}
コマンド内のファイル名を参照するときに変数を使用できます。