Gitのエイリアスを確認するエイリアス
~/.gitconfigに以下の様なものを追加します。
[alias]
al = "!f() {\
if [ \"$#\" -eq 0 ];then \
git config --name-only --get-regexp ^alias\\.|cut -d"." -f2|column;\
return;\
fi;\
ret=0;\
for a in \"$@\";do \
git config --get-regexp ^alias\\.\"$a\"$;\
rettmp=$?;\
if [ $rettmp != 0 ];then \
ret=$rettmp;\
printf \"\\e[31malias.$a is not defined as alias\\n\\e[m\";\
fi;\
done;\
return $ret;\
};f"
エイリアス名はalias
とかも使いたいのですが、
hub
コマンドを使ってgit
をラップしていて、
hub
コマンドがalias
というサブコマンドを持っていてそれに取られてしまうので
alias
というエイリアスは使えない状態です。
なのでエイリアス名はal
に。
引数がない場合には全てのエイリアス一覧を表示します。
$ git al
ad ce log-graph sh dns dw d10 pull-dry-run update
ba ci log-tag st dm d1 d pull-dry-run-s up
br cl ls su dw d2 sm tag-renew deleted
current-branch co mh top dc d3 smfe tag-new restore
cb git-dir rbm root ds d4 smad cancel al
checkout-empty log-all sb p dd d5 smrm check
こんな感じ。
git config --name-only --get-regexp ^alias\.
でconfigの中のエイリアス一覧を取ってきて--name-only
で名前だけ表示にできます(エイリアスの内容を非表示に)。
一覧はalias.ad
みたいな感じなのでalias.
の部分を削除。
順番は~/.gitconfigに書かれた順で表示されるのでアルファベット順にソート。
もし書かれた順に表示したい場合は上のsort|
の部分を削除してください。
最後にcolumn
で整形。
引数がある場合にはその引数に対応するエイリアスの内容を表示します。
$ git al top
alias.top rev-parse --show-toplevel
サブコマンド一覧
ついでにサブコマンドについても。
サブコマンド一覧はgit help -a
で見ることが出来ます。
$ git help -a
usage: git [--version] [--help] [-C <path>] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
available git commands in '/usr/local/Cellar/git/2.14.2/libexec/git-core'
add credential-store index-pack patch-id shortlog
add--interactive cvsexportcommit init prune show
am cvsimport init-db prune-packed show-branch
annotate cvsserver instaweb pull show-index
apply daemon interpret-trailers push show-ref
archimport describe log quiltimport stage
archive diff ls-files read-tree stash
bisect diff-files ls-remote rebase status
bisect--helper diff-index ls-tree rebase--helper stripspace
blame diff-tree mailinfo receive-pack submodule
branch difftool mailsplit reflog submodule--helper
bundle difftool--helper merge remote svn
cat-file fast-export merge-base remote-ext symbolic-ref
check-attr fast-import merge-file remote-fd tag
check-ignore fetch merge-index remote-ftp unpack-file
check-mailmap fetch-pack merge-octopus remote-ftps unpack-objects
check-ref-format filter-branch merge-one-file remote-http update-index
checkout fmt-merge-msg merge-ours remote-https update-ref
checkout-index for-each-ref merge-recursive remote-testsvn update-server-info
cherry format-patch merge-resolve repack upload-archive
cherry-pick fsck merge-subtree replace upload-pack
citool fsck-objects merge-tree request-pull var
clean gc mergetool rerere verify-commit
clone get-tar-commit-id mktag reset verify-pack
column grep mktree rev-list verify-tag
commit gui mv rev-parse web--browse
commit-tree gui--askpass name-rev revert whatchanged
config hash-object notes rm worktree
count-objects help p4 send-email write-tree
credential http-backend pack-objects send-pack
credential-cache http-fetch pack-redundant sh-i18n--envsubst
credential-cache--daemon http-push pack-refs shell
git commands available from elsewhere on your $PATH
clang-format credential-netrc credential-osxkeychain generate-changelog subtree
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
hub custom commands
alias browse ci-status compare create fork issue pull-request release selfupdate version
上みたいなコマンドだけを取ってきたかったらこれを整形する必要がありますが、 通常はこれで十分だと思います。
ちなみにサブコマンドはgit-addの様にgit- + <subcommand>
みたいな名前のファイルが用意されていて
それが呼ばれる様になっています。
なので自分でPATHが通った所に適当なgit-mycommand
みたいな実行ファイルを置いておけば
上記出力の
git commands available from elsewhere on your $PATH
の欄に出てきて実際にgit mycommand
という形で使う事が出来ます。
これはgit
と全く関係ないものでもなんでも良くて
シェルスクリプトでもc++とかで書いてコンパイルした実行ファイルでも
なんでも可能です。
要はgit mycommand
というのがそのままgit-mycommand
に置き換わるだけ。
また、サブコマンドに関してヘルプがある場合は
$ git add -h
とかでそのサブコマンドのヘルプを見れます。
さらにマニュアルがある場合には
$ man git-add
とするとそのマニュアルが開けます。