9

私は Git Bash v1.8.1 をいくつかのエイリアス (テスト用) と共に使用しています。

[alias]
    ekko = !echo $1 && echo $1
    ekko2 = !sh -c 'echo $1 && echo $1'

しかし、それらを実行すると、次のことがわかります。

> git ekko master
master
master master

と:

> git ekko2 master
(blank line) 
(blank line) 

私の意図した動作は次のとおりです。

> git ekko master
master
master

私はエイリアスにかなり慣れていません-引数が完全に消費され、エイリアスの末尾に追加されないようにする方法を探しています。Git v1.7.x のどこかでこの動作が変更されたことがいくつかの調査で示されていますが、これを実現する方法を正確にはまだ決定していません。

Git エイリアス - 複数のコマンドとパラメーター

4

4 に答える 4

16

あなたのekko2エイリアスは本当に近いです...あなたが本当に欲しいのはこれです:

[alias]
    ekko2 = !sh -c 'echo $1 && echo $1' -

シェル コマンドを実行する Git エイリアスは$n変数を置き換えますが、コマンドの最後に渡された引数も追加します。したがって、最初の例では、その出力を説明するgit ekko masterと同等です。echo master && echo master master

2 番目の例の方が近いですが、「master」をshコマンドに渡しているため、余分な引数が無視されています。-エイリアスの最後に追加するshことで、後続の引数がスクリプト自体shではなく、実行中のスクリプトを対象としていることを伝えていshます。

于 2013-08-08T14:36:09.803 に答える
5

ekko2最後に単一のダッシュがありません:

[alias]
    ekko2 = !sh -c 'echo $1 && echo $1' -

引数付きの高度なエイリアスに関する Git Wiki を参照してください。

[alias]
    example = !sh -c 'ls $2 $1' -
于 2013-08-08T14:36:48.527 に答える
4

最後に Bash noop コマンド「:」を追加できます。

git config --global alias.hello-world '!echo "$1"; :'

版画:

$ git hello-world hello world
hello world
于 2016-05-24T11:47:28.570 に答える