gitエイリアスのリスト、つまりbash alias
コマンドに類似したリストを出力するにはどうすればよいですか?
gitエイリアスのリスト、つまりbash alias
コマンドに類似したリストを出力するにはどうすればよいですか?
回答:
この答えは、上に構築されています答えでジョニー。git-alias
from を使用していない場合に適用されgit-extras
ます。
Linuxでは、1回実行します。
git config --global alias.alias "! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /"
これalias
により、~/.gitconfig
ファイルに保存されるという名前の永続的なgitエイリアスが作成されます。これを使用すると、すべてのgitエイリアスが、~/.gitconfig
ファイル内とほぼ同じ形式でリストされます。これを使用するには、次のように入力します。
$ 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の機能ではないことをユーザーが忘れないように、これはお勧めしません。
リストされたエイリアスを並べ替えるには、| sort
二重引用符の直前に追加します。または、エイリアスを~/.gitconfig
ソートしたままにすることもできます。
エイリアスをシステム全体のエイリアスとして追加するには、--global
(現在のユーザーの場合)を--system
(すべてのユーザーの場合)に置き換えます。これは通常、/etc/gitconfig
ファイルに含まれます。
alias.
は、各行の先頭でを取り除くので、好きです
fatal: bad config
ます。Gitは、余分のソリューションはのに私のための作業を行います。github.com/tj/git-extras/blob/master/bin/git-aliasを
git config --global alias.alias "! git config --get-regexp ^alias\."
。または、git version
現在のバージョンのgit であることを確認してください。
$ git config --get-regexpエイリアス
'^alias\.'
git config -e
、目を使って[alias]
セクションを見つけます。しかし、gitファンは常に、必要のないときでも、問題を解決するために少しbashスクリプトまたは正規表現マッチングを投入するようです:)
git config -e
.git/config
ファイルのみを編集します。しかし、私のエイリアスのほとんどはグローバルで定義されてい~/.gitconfig
ます。
git config --global alias.aliases config --get-regexp '^alias\.'"
...そしてgit aliases
"
どこかに行方不明
私alias
はまさにこの目的のために(奇妙なことに)と呼ばれるgitエイリアスを作成しました...エイリアスを十分に使用すれば時々便利です...
$ git config --global alias.alias "config --get-regexp ^alias\."
正規表現では、行がで始まることを確認していalias.
ます。
--system
の代わりに、--global
このようなものは、システムレベルではなく、ユーザーレベルでより有用であるとして。
alias = config --get-regexp ^alias\\.
。
git config --global alias.alias "!git config --get-regexp ^alias\. | grep -Po '(?<=alias\.)\S*' | sort"
別の代替案(私が覚えやすいと思うもの):
git config --list | grep alias
-l
便利なショートカットとして使用できます--list
が、エイリアスを作成してエイリアスを一覧表示するのが好きです。
git config --list | grep -E '^alias'
「bashスクリプト」と聞きましたか?;)
上記のコメントの「不要」の部分については、基本的に、エイリアスの概要のようなmanページを作成しました。なぜすべての大騒ぎ?それは完全な過剰ではありませんか?
読む...
私はこのように私の.gitconfigでこのようなコマンドを設定しましたTAB=TAB:
[alias]
alias1 = foo -x -y --z-option
alias2 = bar -y --z-option --set-something
TAB=定義されたエイリアスの一部をgrepするために、単に別のエイリアスを定義しました。(他のすべてのオプションには、定義の '='の前後にタブはなく、スペースのみが含まれます。)
エイリアスに追加されていないコメントにも追加されるTAB=====ため、grepの後に表示されます。
見やすくするために、次のように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で表示される色を取得するには-R
、lessのフラグが必要です。
(私は最近、ウィンドウの下にスクロールバーがある長いコマンドがモバイルデバイスで正しく表示されないことを発見しました:それらのテキストは切り取られ、スクロールバーは単に欠けています。これはここの最後のコードスニペットのケースかもしれません、それを保持してください外出先でコードスニペットを確認する場合は注意してください)。
私は自分のニーズに合わせて調整された半マイルほどのエイリアスを持っています。
また、そのうちのいくつかは時間の経過とともに変化するため、最新のリストを手に入れるための最善のアイデアは、.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 "..."
?...でも、残りを数えていない
ような仕事に物事を取得git aa
またはgit ca "..."
ウィンドウで、
またはbashのエイリアスとgaa
/ g aa
またはgca "..."
/ g ca "..."
linuxの中やMacの上...
私のニーズのために、このようにgitコマンドを調整することは賢明なことのように思われました...
...簡単に使用できるように、使用頻度の低いコマンドを手助けしたので、毎回manページを参照する必要はありません。コマンドは事前に定義されており、それらの検索は可能な限り簡単です。
結局のところ、私たちはプログラマーですか?必要なものを機能させることが私たちの仕事です。
これが追加のスクリーンショットです。これはWindowsで機能します。
la = "!grep '\t=' ~/.gitconfig | less"
TAB
先例があります=
か?スペースがあると機能しません。.gitconfig
自分でウィンドウにスペースを入れました。スペースを1つのタブストップに置き換えたら、cmd.exeは期待どおりに動作します。
他の回答が述べたように、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
...
したがって、次のコマンドを使用してエイリアス行をgrepできます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
各行cut
のalias.
一部を消して次のコマンドを残すことで、この見栄えを良くすることができます。
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-"
楽しい!
2018年6月に「概要リスト-最もよく使用されるgitコマンド」、Git 2.18「use --list-cmds=alias
(commit 3301d36)」で言及しました。
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
」と言います。
参照してくださいb3a8076コミットにより(2017年9月12日)をKaartic Sivaraam( )sivaraam
。
(合併によりJunio C浜野- gitster
-で5079cc8コミットし、2017年9月25日)を
help
:メッセージをより正確に変更するユーザーが
--help
エイリアスコマンドで' 'オプションを使用しようとすると、次のようにエイリアスに関する情報が出力されます。
$ git co --help
`git co' is aliased to `checkout'
ユーザーは '
co
'ではなく ' ' のみにエイリアスを設定しているため、これは正しくないようですgit co
。
これは、ユーザーが 'tgit
'のようなエイリアスを使用した場合でも正しくない可能性があります。
$ tgit co --help
`git co' is aliased to `checkout'
このエイリアスを私のグローバルで使用しています~/.gitconfig
# ~/.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 \")
これ#
は、列の分離に使用される文字(16進数の043)を出力するだけです。私はこの小さなハックを使用するので、aliases
エイリアス自体には#
文字が含まれていません。そうしないと#
、印刷時にこれらの文字が置き換えられます。
注:リテラル#
記号の付いたエイリアスが必要な場合は、これを別の文字に変更してください。
組み込み関数があります...試してください
$ __git_aliases
すべてのエイリアスをリストします:)
$
プロンプト典型的なLinuxの端子です。この行の残りの部分をそのようなターミナルに入力するとENTER
、エイリアスのリストが表示されます。gitに組み込まれているため、LinuxとWindowsの両方で動作します(git bash)。(コマンドラインでエイリアスを使用する場合、gitがエイリアスを解決するために内部で使用する関数と思われます。)
git 2.18以降では、 git --list-cmds=alias
gitエイリアスを出力するさらに別のgit
エイリアス(と呼ばれるalias
)[alias]
:gitconfig セクションに以下を追加します:
[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}..
警告:正規表現を引用してシェルがグロブとして展開されないようにします。ただし、パターンに一致するファイルがない場合は、技術的には必要ありません。また、^
(パターン開始)と$
(パターン終了)を使用できないことを除いて、任意の正規表現で問題ありません。それらは暗示されています。fromを使用git-alias
していないと仮定しますgit-extras
。
また、エイリアスは明らかに異なります。これらは私が設定したほんの一部です。(おそらく、それらも役に立つでしょう。)