Gitエイリアスの一覧表示


444

gitエイリアスのリスト、つまりbash aliasコマンドに類似したリストを出力するにはどうすればよいですか?



7
@MattDiPasquale-以下の一番上の答えはうまくいくと思いますが、多分それを受け入れるべきですか?
domoarigato 2014

@domoarigatoありがとうございます。返事をお断りして申し訳ありません。私はそうしました。
ma11hew28

これは、有効な質問の候補である可能性があり、承認された回答がなかったため、最も長くなった:):P
domoarigato

@domoarigatoああ。有難う御座います。:-)
ma11hew28

回答:


124

この答えは、上に構築されています答えジョニーgit-aliasfrom を使用していない場合に適用され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ファイルに含まれます。


3
これalias.は、各行の先頭でを取り除くので、好きです
ブライアンJ

3
理由はわかりませんが、この答えは私にはうまくいきません。私は得続けfatal: bad configます。Gitは、余分のソリューションはのに私のための作業を行います。github.com/tj/git-extras/blob/master/bin/git-aliasを
愛鷹

1
@Ashitaka、限定バージョンを試してくださいgit config --global alias.alias "! git config --get-regexp ^alias\."。または、git version現在のバージョンのgit であることを確認してください。
Acumenus 2015年

これは本当に素晴らしい仕事であり、非常に使いやすい方法ですべてをまとめます!
UpAndAdam 2016年

基本的にお互いを元に戻す「!git」の部分を取り除くことができると思います。Gitエイリアスの
ダニエルスティーブンス

489
$ git config --get-regexpエイリアス

39
きちんとするために、それはそうあるべきです'^alias\.'
ジョシュ・リー

27
またはgit config -e、目を使って[alias]セクションを見つけます。しかし、gitファンは常に、必要のないときでも、問題を解決するために少しbashスクリプトまたは正規表現マッチングを投入するようです:)
MatrixFrog

39
git config -e.git/configファイルのみを編集します。しかし、私のエイリアスのほとんどはグローバルで定義されてい~/.gitconfigます。
Boldewyn、2012年

21
実用的であるためには、それがあるべきgit config --global alias.aliases config --get-regexp '^alias\.'"...そしてgit aliases
デレク・グリア

6
@DerekGreer "どこかに行方不明
Jake Berger

147

aliasはまさにこの目的のために(奇妙なことに)と呼ばれるgitエイリアスを作成しました...エイリアスを十分に使用すれば時々便利です...

$ git config --global alias.alias "config --get-regexp ^alias\."

正規表現では、行がで始まることを確認していalias.ます。


私はこの回答に少し基づいて回答を追加しました。
Acumenus 2014年

1
私はお勧め--systemの代わりに、--globalこのようなものは、システムレベルではなく、ユーザーレベルでより有用であるとして。
ADTC 2014

1
これが大好き。You da You da best
Charles Watson

2
gitconfigに直接追加する場合は、次のようにする必要がありますalias = config --get-regexp ^alias\\.
marczych

どうですかgit config --global alias.alias "!git config --get-regexp ^alias\. | grep -Po '(?<=alias\.)\S*' | sort"
キース・ロバートソン、

84

別の代替案(私が覚えやすいと思うもの):

git config --list | grep alias


8
覚えやすいといえば、一度エイリアスを作成し、alias作成したことを忘れてしまうこともあるでしょう。
Acumenus 2014年

3
-l便利なショートカットとして使用できます--listが、エイリアスを作成してエイリアスを一覧表示するのが好きです。
ADTC、2014

1
良い解決策、より良いいくつかの構成は何とかキーワード別名が含まれている場合は、別名で始まる行を生成するために正規表現ではgrepを使用して:git config --list | grep -E '^alias'
首謀

28

以下は、Linux、MacOSXおよびWindows(msysgitを使用)で動作します。

git laを使用して.gitconfigにエイリアスを表示する

「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で表示される色を取得するには-Rlessのフラグが必要です。

(私は最近、ウィンドウの下にスクロールバーがある長いコマンドがモバイルデバイスで正しく表示されないことを発見しました:それらのテキストは切り取られ、スクロールバーは単に欠けています。これはここの最後のコードスニペットのケースかもしれません、それを保持してください外出先でコードスニペットを確認する場合は注意してください)。


なぜそのような魔法を働かせるのですか?

私は自分のニーズに合わせて調整された半マイルほどのエイリアスを持っています。
また、そのうちのいくつかは時間の経過とともに変化するため、最新のリストを手に入れるための最善のアイデアは、.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助けを得るために必要とされるすべてではありません。ほんの一部の文字ですが、どれくらいの頻度で入力しますか?

私は以下のすべてを使用していますが、もちろんショートカットのみです...

  • 追加
  • コミット
  • コミット-修正
  • リセット-ハードヘッド
  • 押す
  • フェッチ
  • リベース
  • チェックアウト
  • ブランチ
  • show-branch(多くのバリエーション)
  • ショートログ
  • reflog
  • diff(バリエーション)
  • ログ(多くのバリエーション)
  • 状態
  • 公演
  • ノート
  • ...

これは頭​​のてっぺんからでした。

多くの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で機能します。

cmd.exeを使用するスクリプト

ボーナス:LinuxまたはMacを使用している場合は、色分けされたmanページがかなり役立ちます。

色付きのマニュアルページ


1
これをWindowsで動作させることができません。たとえば、出力は空白ですla = "!grep '\t=' ~/.gitconfig | less"
chwi

1
@Wilhelmsen:上記のリストからコピーして貼り付けましたか?あなたは本当にTAB先例があります=か?スペースがあると機能しません。.gitconfig自分でウィンドウにスペースを入れました。スペースを1つのタブストップに置き換えたら、cmd.exeは期待どおりに動作します。
sjas

2
オーバーエンジニアリング
武器X

何かを使用する頻度によって異なります
sjas

16

git varで始まるもののみを使用してフィルタリングするalias

git var -l | grep -e "^alias"

14

他の回答が述べたように、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

各行cutalias.一部を消して次のコマンドを残すことで、この見栄えを良くすることができます。

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-"

楽しい!



12

2018年6月に「概要リスト-最もよく使用されるgitコマンド」、Git 2.18「use --list-cmds=aliascommit 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'

9

すべてのエイリアスを検索または表示する

.gitconfig下に追加[alias]

aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"

その後、行うことができます

  • git aliases -すべてのエイリアスを表示
  • git aliases commit -「commit」を含むエイリアスのみ

9

このエイリアスを私のグローバルで使用しています~/.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で動作します。他の端末では、エスケープを調整する必要がある場合があります。


説明

  1. !git config --get-regexp ^alias\\. git configから始まるすべての行を出力します alias.
  2. sed -e s/^alias.//alias.行から削除します
  3. sed -e s/\\ /\\ $(printf \"\\043\")--\\>\\ /最初に出現するスペースを\\ $(printf \"\\043\")--\\>(と評価される#-->)に置き換えます。
  4. column -t -s $(printf \"\\043\")すべての行を等間隔の列テーブルにフォーマットします。$(printf \"\\043\")評価する文字が#セパレーターとして使用されます。
  5. sort -k 1 最初の列の値に基づいてすべての行を並べ替えます

$(printf \ "\ 043 \")

これ#は、列の分離に使用される文字(16進数の043)を出力するだけです。私はこの小さなハックを使用するので、aliases エイリアス自体には#文字が含まれていません。そうしないと#、印刷時にこれらの文字が置き換えられます。 :リテラル#記号の付いたエイリアスが必要な場合は、これを別の文字に変更してください


fatal:再帰エイリアス:エイリアス
Urasquirrel

致命的:ファイルC:/ Users / ____ /。gitconfigの構成行15が不正
Urasquirrel

@Urasquirrel:どのOSで問題が発生していますか?これは、Windowsではgit bashで、Mac OS X(Apple Git)ではbashで機能します。
トーマス

間違いなく窓だったが、1年以上後は100%よくわからない。
Urasquirrel

2

組み込み関数があります...試してください

$ __git_aliases

すべてのエイリアスをリストします:)


3
サンプル出力とともに、これを使用する方法のコマンドラインの例を示すことができますか?
Acumenus 2014

何に組み込まれていますか?msysgitでこのようなものを見つけることができません。どこでこれを見つけましたか?
ADTC、2014

2
これを端末から直接呼び出すことも、gitの引数として呼び出すことも、valueの出力を生成しません。これは一体何に組み込まれているのですか?
同意して黙示的な2015年

4
git bashで私のために働いた。$ __git_aliasesはエイリアスのリストを返しますが、エイリアスの対象を示していません。
jaypb

1
@ADTCこの回答のコード行コマンドラインの例です。$ プロンプト典型的なLinuxの端子です。この行の残りの部分をそのようなターミナルに入力するとENTER、エイリアスのリストが表示されます。gitに組み込まれているため、LinuxとWindowsの両方で動作します(git bash)。(コマンドラインでエイリアスを使用する場合、gitがエイリアスを解決するために内部で使用する関数と思われます。)
Superole

1

エイリアスの名前がわかっている場合は、--helpオプションを使用してそれを説明できます。例えば:

$ git sa --help
`git sa' is aliased to `stash'

$ git a --help
`git a' is aliased to `add'

1

git 2.18以降では、 git --list-cmds=alias


それらはコンテンツではなくエイリアスcmdのみを返します。それを取得するオプションはありますか?
Carles Alcolea

0

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

また、エイリアスは明らかに異なります。これらは私が設定したほんの一部です。(おそらく、それらも役に立つでしょう。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.