どのようにして私のgitエイリアスのリスト、すなわちbash alias
コマンドに類似したもののリストを印刷するのですか?
この答えは answer by johnny に基づいています。 git-alias
から git-extras
を使用していない場合に適用されます。
Linuxでは、一度実行します。
git config --global alias.alias "! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /"
これはあなたの~/.gitconfig
ファイルに格納されるalias
という名前の永久的なgitエイリアスを作成します。これを使用すると、~/.gitconfig
ファイルにあるのとほぼ同じ形式で、すべてのgitエイリアスが一覧表示されます。使用するには、次のように入力します。
$ git alias
loga = log --graph --decorate --name-status --all
alias = ! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /
以下のオプションの考慮事項が適用されます。
エイリアスalias
が上記のように表示されないようにするには、閉じる二重引用符の直前に| grep -v ^'alias '
を追加します。 alias
というコマンドが単なるエイリアスでgitの機能ではないことを忘れないように、Linuxユーザーにはこれをお勧めしません。
リストされたエイリアスをソートするには、閉じ二重引用符の直前に| sort
を追加します。あるいは、~/.gitconfig
内の別名をソートしたままにすることもできます。
別名をシステム全体の別名として追加するには、(現在のユーザーの)--global
を(すべてのユーザーの)--system
に置き換えます。これは通常/etc/gitconfig
ファイルにあります。
$ git config --get-regexpエイリアス
この目的のために、(奇妙にも)alias
と呼ばれるgitエイリアスを作成しました。
$ git config --global alias.alias "config --get-regexp ^alias\."
正規表現では、行がalias.
で始まることを確認してください。
もう一つの選択肢(純粋に覚えやすいと思うもの):
git config --list | grep alias
「bashスクリプト」と聞きましたか? ;)
上記のコメントの「不要」の部分については、基本的に自分のエイリアスの概要のようなmanページを作成しました。なぜすべての大騒ぎ?その完全なやり過ぎではないですか?
読む...
.gitconfigで、のように区切って、このようにコマンドを設定しました。TAB=TAB:
[alias]
alias1 = foo -x -y --z-option
alias2 = bar -y --z-option --set-something
そしてをgrepするために別のエイリアスを定義するだけです。TAB=定義済みエイリアスの部分。 (他のすべてのオプションでは、定義内の '='の前後にタブがなく、スペースのみがあります。)
別名に追加されていないコメントにもが付きます。TAB=====が追加されたので、それらはgreppingの後に表示されます。
見やすくするために、grep出力をlessにパイプしています。
#.gitconfig
[alias]
# use 'git h <command>' for help, use 'git la' to list aliases =====
h = help #... <git-command-in-question>
la = "!grep '\t=' ~/.gitconfig | less"
'\t=
'部分は一致しますTAB=.
私が持っているエイリアスのより良い概要を得るために、そして私はbashコンソールを使っているので、私は出力を端末の色で着色しました:
la = "!grep '\t=' ~/.gitconfig | sed -e 's/=/^[[0;31m=^[[0m/g' | sed -e 's/#.*/^[[0;32m&^[[0m/g' | less -R"
基本的に上記と同じですが、カラーコードを出力に入れるためにsedの使用法が追加されています。
Lessで表示される色を取得するには、lessの-R
フラグが必要です。
(私は最近、ウィンドウの下にスクロールバーがある長いコマンドは、モバイルデバイスでは正しく表示されないことを発見しました。外出中にコードスニペットを見るときには注意してください。)
私は自分のニーズに合わせて作られた、エイリアスのような半マイルを持っています。
また、それらのうちのいくつかは時間の経過とともに変化するので、結局最新のリストを手に入れるための最善のアイデアは、.gitconfigを解析することです。
私の.gitconfigエイリアスからの**** short ****の抜粋:
# choose =====
a = add #...
aa = add .
ai = add -i
# unchoose =====
rm = rm -r #... unversion and delete
rmc = rm -r --cached #... unversion, but leave in working copy
# do =====
c = commit -m #...
fc = commit -am "fastcommit"
ca = commit -am #...
mc = commit # think 'message-commit'
mca = commit -a
cam = commit --amend -C HEAD # update last commit
# undo =====
r = reset --hard HEAD
rv = revert HEAD
私のLinuxまたはMacワークステーションでも、.bashrcには別名があります。
#.bashrc
alias g="git"
alias gh="git h"
alias gla="git la"
function gc { git c "$*" } # this is handy, just type 'gc this is my commitmessage' at Prompt
そのため、git help submodule
を入力する必要はなく、git h submodule
を入力する必要もありません。単にgh submodule
を入力するだけで、ヘルプを入手できます。それはほんの一部の文字ですが、どのくらいの頻度でそれらをタイプしますか?
私は以下のすべてをもちろんショートカットだけで使っています...
これは私の頭の上からちょうどでした。
多くのgitコマンドはどのグラフィカルフロントエンドにも正しく実装されていないので、私はしばしばguiなしでgitを使わなければなりません。しかし、私がそれらを使用するたびに、それはほとんど同じ方法です。
最後の段落で述べた「実装されていない」部分について:
GUIでこれに匹敵するものをまだ見つけていません。sba = show-branch --color=always -a --more=10 --no-name
- すべてのローカルブランチとリモートブランチ、およびそれらに含まれるコミットを表示しますccm = "!git reset --soft HEAD~ && git commit"
- 最後のコミットメッセージを変更する
より単純な観点からは:git add .
またはgit commit -am "..."
をどのくらいの頻度で入力しますか。残りも数えないで….
Windowsでgit aa
やgit ca "..."
のように動作するようにする、
またはbashエイリアスを使用する場合gaa
/g aa
またはgca "..."
/g ca "..."
はLinuxおよびMac上では...
私の必要性のためには、このようなgitコマンドを調整するために、やることが賢いことのようでした...
...そして、使いやすくするために、使用頻度の低いコマンドを手助けしたので、毎回manページを参照する必要はありません。コマンドは事前定義されており、それらを調べるのはできるだけ簡単です。
つまり、私たちはプログラマーなのですか?必要なものとして機能させることが私たちの仕事です。
これは追加のスクリーンショットです。これはWindowsで機能します。
git var
を使用し、alias
で始まるものだけをフィルタリングします。
git var -l | grep -e "^alias"
他の答えが述べたように、git config -l
はあなたの設定ファイルからあなたの全ての設定詳細をリストします。これは私の設定のためのその出力の部分的な例です:
...
alias.force=Push -f
alias.wd=diff --color-words
alias.shove=Push -f
alias.gitignore=!git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
alias.branches=!git remote show Origin | grep \w*\s*(new^|tracked) -E
core.repositoryformatversion=0
core.filemode=false
core.bare=false
...
それでgit config -l | grep alias
を使ってエイリアスラインを描くことができます:
alias.force=Push -f
alias.wd=diff --color-words
alias.shove=Push -f
alias.gitignore=!git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
alias.branches=!git remote show Origin | grep \w*\s*(new^|tracked) -E
各行のalias.
の部分をcut
にすることで、これをよりきれいにすることができます。このコマンドを使用して、
git config -l | grep alias | cut -c 7-
どの印刷物:
force=Push -f
wd=diff --color-words
shove=Push -f
gitignore=!git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
branches=!git remote show Origin | grep \w*\s*(new^|tracked) -E
最後に、これを別名として追加することを忘れないでください。
git config --global alias.la "!git config -l | grep alias | cut -c 7-"
楽しい!
.gitconfig
の下の[alias]
に追加します。
aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"
それからあなたはできる
git aliases
- すべてのエイリアスを表示git aliases commit
- "commit"を含むエイリアスのみwindowsの場合
git config --list | findstr "alias"
2018年6月に「 概要リスト-最も使用されているgitコマンド 」Git 2.18「use --list-cmds=alias
( commit 3301d36 )」、つまり carejhis answer でレポートします。
git --list-cmds=alias
それまたはgit config --get-regexp alias
に加えて、その出力を git help
と組み合わせることができ、その出力はGit 2.14.x/2.15で変更されます:
「
git help co
」は、「co is aliased to ...
」ではなく、「git co is
」になります。
commit b3a8076 (2017年9月12日)by Kaartic Sivaraam(sivaraam
) を参照してください。
( 浜野順夫-gitster
- in commit 5079cc8 、2017年9月25日)
help
:メッセージをより正確に変更しますユーザーがエイリアスコマンドで「
--help
」オプションを使用しようとすると、エイリアスに関する情報が次のように出力されます。
$ git co --help
`git co' is aliased to `checkout'
ユーザーのエイリアスは「
git co
」ではなく「co
」のみであるため、これは正しくないようです。
これは、ユーザーが「tgit
」のようなエイリアスを使用している場合でも、間違っている可能性があります。
$ tgit co --help
`git co' is aliased to `checkout'
私のグローバル~/.gitconfig
でthis aliasを使っています
# ~/.gitconfig
[alias]
aliases = !git config --get-regexp ^alias\\. | sed -e s/^alias.// -e s/\\ /\\ $(printf \"\\043\")--\\>\\ / | column -t -s $(printf \"\\043\") | sort -k 1
次の出力を生成する
$ git aliases
aliases --> !git config --get-regexp ^alias\. | sed -e s/^alias.// -e s/\ /\ $(printf "\043")--\>\ / | column -t -s $(printf "\043") | sort -k 1
ci --> commit -v
cim --> commit -m
co --> checkout
logg --> log --graph --decorate --oneline
pl --> pull
st --> status
... --> ...
(注:これはWindowsではgit bashで動作します。他の端末ではエスケープを調整する必要があるかもしれません。)
!git config --get-regexp ^alias\\.
は、git configからalias.
で始まるすべての行を印刷します。sed -e s/^alias.//
は行からalias.
を削除しますsed -e s/\\ /\\ $(printf \"\\043\")--\\>\\ /
は、最初に出現したスペースを\\ $(printf \"\\043\")--\\>
(#-->
と評価される)に置き換えます。column -t -s $(printf \"\\043\")
は、すべての行を等間隔の列テーブルにフォーマットします。 #
と評価される文字$(printf \"\\043\")
は、区切り文字として使用されます。sort -k 1
は、最初の列の値に基づいてすべての行をソートします$(printf\"\ 043 \")
これは単にカラムの分離に使われる文字#
(hex 043)を表示するだけです。私はこの小さなハックを使用しているので、aliases
エイリアス自体は文字通り#
文字を含んでいません。そうでなければ、印刷時にそれらの#
文字を置き換えます。 Note:リテラルの#
記号の付いた別名が必要な場合は、これを別の文字に変更してください。
組み込み関数があります...試してください
$ __git_aliases
すべてのエイリアスを一覧表示します。
エイリアスの名前がわかっている場合は、--help
オプションを使用してそれを説明できます。例えば:
$ git sa --help
`git sa' is aliased to `stash'
$ git a --help
`git a' is aliased to `add'
Git 2.18からはgit --list-cmds=alias
を使うことができます
Gitエイリアスを表示するもう1つのgit
エイリアス(alias
):gitconfigの[alias]
セクションに以下を追加します。
[alias]
# lists aliases matching a regular expression
alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
使用例。完全なエイリアス名(エイリアス名と正確に一致するもの、つまり^foobar$
)を指定し、単純に値を表示します。
$ git alias st
alias.st status -s
$ git alias dif
alias.dif diff
あるいは、すべての一致するエイリアスと値を表示するregexpを与えます。
$ git alias 'dif.*'
alias.dif diff
alias.difs diff --staged
alias.difh diff HEAD
alias.difr diff @{u}
alias.difl diff --name-only
$ git alias '.*ing'
alias.incoming !git remote update -p; git log ..@{u}
alias.outgoing log @{u}..
警告:シェルの展開をグロブとして防ぐために正規表現を引用してください。ただし、パターンに一致するファイルがない場合は必要ありません。 ^
(パターン開始)と$
(パターン終了)は使用できません。それらは暗示されています。 git-alias
のgit-extras
を使っていないと仮定します。
また、明らかにあなたのエイリアスは異なるでしょう。これらは私が設定したほんの一部です。 (おそらくあなたもそれらが役に立つと思うでしょう。)