web-dev-qa-db-ja.com

Gitエリアスの一覧表示

どのようにして私のgitエイリアスのリスト、すなわちbash aliasコマンドに類似したもののリストを印刷するのですか?

379
ma11hew28

この答えは 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ファイルにあります。

61
A-B-B
 $ git config --get-regexpエイリアス
436
William Pursell

この目的のために、(奇妙にも)aliasと呼ばれるgitエイリアスを作成しました。

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

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

133
johnny

もう一つの選択肢(純粋に覚えやすいと思うもの):

git config --list | grep alias

72
Rimian

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

.gitconfigのエイリアスを表示するには、git laを使用します。

「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を入力するだけで、ヘルプを入手できます。それはほんの一部の文字ですが、どのくらいの頻度でそれらをタイプしますか?

私は以下のすべてをもちろんショートカットだけで使っています...

  • 追加する
  • コミット
  • commit --amend
  • リセット - ハードHEAD
  • 押す
  • fetch
  • リベース
  • チェックアウト
  • ブランチ
  • show-branch(たくさんのバリエーションがあります)
  • ショートログ
  • 再ログ
  • 差分(バリエーション)
  • ログ(さまざまなバリエーション)
  • 状態
  • 見せる
  • ノート
  • ...

これは私の頭の上からちょうどでした。

多くの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 aagit ca "..."のように動作するようにする、
またはbashエイリアスを使用する場合gaa/g aaまたはgca "..."/g ca "..."はLinuxおよびMac上では...

私の必要性のためには、このようなgitコマンドを調整するために、やることが賢いことのようでした...
...そして、使いやすくするために、使用頻度の低いコマンドを手助けしたので、毎回manページを参照する必要はありません。コマンドは事前定義されており、それらを調べるのはできるだけ簡単です。

つまり、私たちはプログラマーなのですか?必要なものとして機能させることが私たちの仕事です。

これは追加のスクリーンショットです。これはWindowsで機能します。

script working with cmd.exe

ボーナス:もしあなたがLinuxやMacを使っているのであれば、色付けされたmanページがかなり役に立ちます。

色付けされたmanページ

27
sjas

git var を使用し、aliasで始まるものだけをフィルタリングします。

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

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

楽しい!

14
Anubian Noob

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

.gitconfigの下の[alias]に追加します。

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

それからあなたはできる

  • git aliases - すべてのエイリアスを表示
  • git aliases commit - "commit"を含むエイリアスのみ
9
Tom Hale

windowsの場合

git config --list | findstr "alias"
9
176coding

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

私のグローバル~/.gitconfigthis 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で動作します。他の端末ではエスケープを調整する必要があるかもしれません。


説明

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

これは単にカラムの分離に使われる文字#(hex 043)を表示するだけです。私はこの小さなハックを使用しているので、aliasesエイリアス自体は文字通り#文字を含んでいません。そうでなければ、印刷時にそれらの#文字を置き換えます。 Note:リテラルの#記号の付いた別名が必要な場合は、これを別の文字に変更してください。

7
Thomas

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

$ __git_aliases

すべてのエイリアスを一覧表示します。

2
vigo

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

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

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

Git 2.18からはgit --list-cmds=aliasを使うことができます

1
carej

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-aliasgit-extrasを使っていないと仮定します。

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

0
michael