git [action]コマンドのエイリアス(スペースを含む)を作成するには?

git [action]コマンドのエイリアス(スペースを含む)を作成するには?

私のエイリアスのほとんどは次の形式です。alias p='pwd'

git commitエイリアスを使用して可能にしたいと思います。git commit -v

ただし、スペースを含むエイリアスを作成しようとするとエラーが発生します。

$ alias 'git commit'='git commit -v'
-bash: alias: `git commit': invalid alias name

答え1

あなたの質問に対する直接的な答えではありませんが(エイリアスは1つの単語しか利用できないため)、次のものを使用する必要がありますgit-config

git config --global alias.civ commit -v

残念ながら、私が知っている限り、これはgit civ実行するためにgitエイリアスを生成します。git commit -vエイリアスで既存のgitコマンドを上書きすることはできません。。ただし、いつでも適切な別名を選択できます。

答え2

スペースを含むコマンドについて話していますが、ここにはgitスペースはありません。

電話番号子コミットコマンドを作成する必要があります。

git\ commit ...
'git commit' ...
"git commit" ...

通常、コマンドはシェルから呼び出すのが面倒なので、名前にスペースはありません。したがって、システムでそのようなコマンドが見つからないようです。

csh、tcsh、またはzshを使用すると、上記のいずれかの項目にエイリアスを割り当てることができますが、bashまたはkshは使用できません(pdkshでは許可しますが使用できません)。 zshから:

alias "'git commit'=git commit -v"
'git commit' ...

引数は、このコマンドをコマンドのエイリアスにするために使用されますgit command(二重引用符で呼び出される場合のみ)。'git command'私はこれがあなたが探しているものではないと思います。gitcommit-v

aliasエイリアシングのみ可能なので注文する、ここでエイリアスを指定できるのはgitコマンドで、パラメータリストの「commit」の後に「-v」を挿入するエントリにエイリアスを指定する必要があります。 @jw013の解決策を使用する方が良いですが、何らかの理由でできない場合やできない場合は、エイリアスを使用する代わりに関数を使用して操作を実行できます。

git() {
  if [ "$1" = commit ]; then
    shift
    set -- commit -v "$@"
  fi
  command git "$@"
}

答え3

Bashでは、スペースを含むコマンドのエイリアスを作成することはできません。
しかし、回避策として.bashrcで次の機能を使用しています。

sudo() { if [[ $@ == "pacman -Syu" ]]; then command pacup.sh; else command sudo "$@"; fi; }

どのように機能するかは、呼び出したいコマンドで始めることです。私が知っている限り、そうですsudo
その後、必要なパラメータに言及しました。この場合はpacman -Syu
トリガされたら、どのコマンドを実行する必要がありますか?上記の声明はpacup.sh
それ以外の場合は、どのコマンドを実行する必要がありますかsudo $@$@お分かりのように、これはコマンドが使用する引数のリストです。

したがって、特定の状況に合わせてコマンドを調整すると、次のようになります。

git() { if [[ $1 == "commit" ]]; then command git commit -v; else command git "$@"; fi; }

ただし、このソリューションは、スペースを含むコマンドにエイリアスを追加したいというより一般的なケースに適しています。
場合によっては、jw013のソリューションを使用してgitコマンドエイリアスを使用することをお勧めします。git-config

答え4

正しい解決策は、jw013で提案されているようにエイリアスを使用することですが、スペースを含むエイリアスを作成するにはエイリアスを入れ子にすることができます。

たとえば、ローカルおよびリモートでブランチを削除できるエイリアスがありますが、ユーザーは常にブランチを指定できるようにしたいとします。

remrem = "!sh -c 'if [ $# -ne 1 ]; then git specBranch; else git push origin :$1 && git branch -d $1; fi' -"

#echoing aliases
specBranch = "!sh -c 'echo Specify branch please!'" 

関連情報