zshプラグインのgitエイリアスを使用しています。https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git
したがって、次のようなgitエイリアスがあります。
gst # git status
ga # git add
gc "commit" # git commit -v "commit"
...
...また、git bare repoを使用してすべてのドットファイルをバックアップします。https://github.com/Anthonyive/dotfiles/blob/0706bc81daa3aeb7899b506cd89d4ab78fc7b176/USAGE.md
特に、git bare repoテクノロジは、gitコマンドのエイリアスを次のように指定しますdotfiles
。
alias dotfiles='git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
alias d='dotfiles'
それでは、すべてのgit aliasコマンドをどのようにマッピングしますかd
?良い:
dst # similar to gst, but uses the dotfiles alias
da # similar to ga
dc "commit" # similar to gc "commit"
...
一つずつマッピングするのは面倒そうです...
ベストアンサー1
連想配列aliases
すべてのエイリアス定義を含みます。
for name in "${(@k)aliases}"; do
if [[ $name == g* && $aliases[$name] == 'git '* ]]; then
alias d${name#g}="dotfiles ${aliases[$name]#git }"
fi
done
または、d
エイリアスを次のgitコマンドが必要な関数に変更することもできますが、最初にシェルエイリアスを展開して先行しますgit
。
alias d='d ' # expand aliases after d
function d {
if [[ $1 == "git" ]]; then shift; fi
dotfiles "$@"
}
その後d gst
実行されますdotfiles status
。d gc myfile
実行されますdotfiles commit myfile
。d ls-tree
実行されますdotfiles ls-tree
。完了は可能ですが、簡単ではありません。