1. ホーム
  2. ギット

[解決済み】位置指定パラメータを使用したGitエイリアス

2022-03-31 22:54:46

質問

基本的にエイリアスを作ろうとしています。

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

...どうしたらうまくいくのでしょうか?

どのように解決するのですか?

シェル関数を使えば、この問題を解決できるかもしれません。

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

を使用しないエイリアスです。 ! はGitコマンドとして扱われます。 commit-all = commit -a .

を使用すると ! を使うと、シェルの中で独自のコマンドとして実行されるので、このような強力なマジックが使えるようになります。

アップデイト

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