3

「ローカルで実行する Git プル フック スクリプト」と答えると、pullまたはpush拡張機能を使用して組み込みの git コマンドをエイリアスするユースケースに出くわしました。それ、どうやったら出来るの?

最初に考えたのは:

[alias]
    push = "!echo -n \"really push? [y/n]\";read -s -n 1 really;if [[ $really == \"y\" ]];then git push; else echo \"aborting\"; fi"

エイリアスに名前を付けない限り、これは正常に機能しますpush(たとえばqp、そのようなもの)。しかし、私がそれを呼び出すとすぐにpush、どういうわけか無視されます。

エイリアスを使用して組み込みの git コマンドを展開する git の方法はあり.bashrcますか?

4

1 に答える 1

5

簡単な答え:できません

Git では、(スクリプトなどで) git コマンドの呼び出しに影響を与える可能性のある混乱やシャドーイングを防ぐために、これを明示的に禁止しています。git-config マンページを参照してください。

alias.*

git(1) コマンド ラッパーのコマンド エイリアス - たとえば、「alias.last = cat-file commit HEAD」を定義した後、呼び出し「git last」は「git cat-file commit HEAD」と同等です。スクリプトの使用に関する混乱やトラブルを避けるために、既存の git コマンドを隠すエイリアスは無視されます。引数はスペースで分割され、通常のシェルの引用とエスケープがサポートされています。引用符のペアとバックスラッシュを使用してそれらを引用できます。

お気づきのように、エイリアスに別の名前を付けて代わりに使用するか、bash. ただし、bash ではマルチワード エイリアスを使用できないため、「git push」のエイリアスを作成できないことに注意してください。代わりに、関数を使用する必要があります。いくつかのヒントについては、SuperUser の「Bash: エイリアス名のスペース」を参照してください(おそらく大規模に採用できます)。

于 2012-06-27T12:25:11.753 に答える