このgitエイリアスはどのように機能しますか?

このgitエイリアスはどのように機能しますか?

通常、gitエイリアスは単一のコマンドに制限されます。

git config --global alias.ci commit

だから、git commitあなたはこれを行うことができますgit ci

しかし、ここに関数を挿入することもできるようです。

git config --global alias.up-sub '!f() { cd $1 && git checkout master && git pull && git submodule update --init --recursive; }; f'

これにより電話をかけることができます。git up-sub some-submodule

問題は、これがどのように機能するかです。!f()他のどの状況でもこの構文を見たことはありません。

答え1

通常のシェル関数の定義と呼び出しのように見えます。爆発音だけが目立つが、git-config(1)マニュアルを素早く検索してみると説明が出ます。

エイリアス拡張の前に感嘆符が付いている場合、これはシェルコマンドとして扱われます。たとえば、「alias.new = !gitk --all --not ORIG_HEAD」を定義し、「git new」を呼び出すことは、シェルコマンド「gitk --all --not ORIG_HEAD」を実行するのと同じです。シェルコマンドは、リポジトリの最上位ディレクトリ(必ずしも現在のディレクトリである必要はありません)で実行されます。

強打がない場合は、gitサブコマンドのエイリアスが指定されます。

関連情報