列出Git别名

ma1*_*w28 408 git terminal alias

如何打印我的git别名列表,即类似于bash alias命令的内容?

Wil*_*ell 463

$ git config --get-regexp alias

  • 要迂腐,那应该是''别名\.'` (38认同)
  • `git config -e`只编辑`.git/config`文件.但我的大多数别名都在全局`〜/ .gitconfig`中定义. (38认同)
  • 或者只是`git config -e`然后用你的眼睛找到`[别名]`部分.但是git粉丝似乎总是抛出一些bash脚本或正则表达式匹配来解决他们的问题,即使它没有必要:) (26认同)
  • 实际上,应该是`git config --global alias.aliases config --get-regexp'^ alias \.'"`...然后`git别名` (21认同)
  • @DerekGreer你错过了某个地方 (6认同)
  • `git config --global alias.aliases"config --get-regexp'^ alias \.'"``然后`git别名` (4认同)
  • @MatrixFrog有些人总是开始一个大的对话,有大量的信息可以查看,即使没有必要,而不是使用像正则表达式这样的工具来预先减少工作量;-) (2认同)

joh*_*nny 145

alias为了这个目的,我创建了一个名为(奇怪的是)的git别名......如果你足够使用别名,我会不时使用它...

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

注意,正则表达式确保该行开头alias..

  • 我建议使用“--system”而不是“--global”,因为这样的东西在系统级别而不是用户级别更有用。 (2认同)
  • 如果你想将它直接添加到你的gitconfig,它必须如下所示:`alias = config --get-regexp ^ alias \\.`. (2认同)

Acu*_*nus 93

这个答案建立在答案约翰尼.它如果你不使用适用git-aliasgit-extras.

在Linux上,运行一次:

git config --global alias.alias "! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /"
Run Code Online (Sandbox Code Playgroud)

这将创建一个名为的永久git别名alias,该别名将存储在您的~/.gitconfig文件中.使用它将列出所有git别名,格式与~/.gitconfig文件中的格式几乎相同.要使用它,请键入:

$ git alias
loga = log --graph --decorate --name-status --all
alias = ! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /
Run Code Online (Sandbox Code Playgroud)

以下可选注意事项适用:

  • 要防止别名alias如上所列,请| grep -v ^'alias '在结束双引号之前附加.我不建议Linux用户这样做,这样他们就不会忘记命令alias只是别名而不是git的功能.

  • 要对列出的别名进行排序,请| sort在结束双引号之前追加.或者,您可以将别名保留为已~/.gitconfig排序.

  • 要将别名添加为系统范围的别名,请将--global(对于当前用户)替换为--system(对于所有用户).这通常在/etc/gitconfig文件中.

  • I like this one because it gets rid of the `alias.` at the beginning of each line (3认同)
  • 不知道为什么,但这个答案对我不起作用.我一直变得"致命:糟糕的配置".Git-extra的解决方案对我有用:https://github.com/tj/git-extras/blob/master/bin/git-alias (3认同)
  • 只需要一个表达式:`sed -e 's/\\(^alias\\)\\./\\1 = /'`。我喜欢添加一些颜色: `sed -e 's/^alias\\.\\([^ ]*\\)/\\x1B[33m\\1\\x1B[0m =/'` (2认同)

Rim*_*ian 79

另一种选择(纯粹是我容易记住的东西):

git config --list | grep alias

  • 说起容易记住,你也可以[创建`alias`别名](http://stackoverflow.com/a/22183573/832230)一次,然后忘记你甚至创建它. (8认同)
  • 您可以使用`-l`作为`--list`的方便快捷方式,但我喜欢创建别名以列出别名的想法. (3认同)

sja*_*jas 27

以下适用于Linux,MacOSX和Windows(使用msysgit).

使用git la在.gitconfig中显示别名

我听过'bash脚本'了吗?;)

关于上面评论中的"不需要"部分,我基本上创建了一个类似于我的别名的概述的手册页.为什么大惊小怪呢?这不是完全矫枉过正吗?

继续阅读......

我在.gitconfig中设置了这样的命令,分隔如下TAB=TAB:

[alias]
        alias1            =            foo -x -y --z-option
        alias2            =            bar -y --z-option --set-something
Run Code Online (Sandbox Code Playgroud)

并简单地定义了另一个别名来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" 
Run Code Online (Sandbox Code Playgroud)

' \t='部分匹配TAB=.

为了更好地概述我拥有的别名,并且因为我使用了bash控制台,我使用终端颜色为输出着色:

  • 所有'='都以红色打印
  • 所有'#'都以绿色打印

高级版:(彩色)

       la      =       "!grep '\t=' ~/.gitconfig | sed -e 's/=/^[[0;31m=^[[0m/g' | sed -e 's/#.*/^[[0;32m&^[[0m/g' | less -R"
Run Code Online (Sandbox Code Playgroud)

基本上与上面相同,只是添加了sed用法以将颜色代码输入到输出中.

需要较少-R标志才能使颜色显示较少.

(我最近发现,在他们的窗口下有一个滚动条的长命令在移动设备上没有正确显示:他们的文本被切断了,滚动条就丢失了.这可能是最后一个代码片段的情况,请保留在旅途中查看代码片段时请注意.)


为什么要让这样的魔法起作用?

我有一个半英里的别名,根据我的需要量身定制.
其中一些也会随着时间的推移发生变化,因此最好有一个最新的清单可以解析.gitconfig.

来自我的.gitconfig别名的****短****摘录:

    #  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
Run Code Online (Sandbox Code Playgroud)

在我的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
Run Code Online (Sandbox Code Playgroud)

这样就不需要输入git help submodule,也不需要git h submodule,只gh submodule需要获得帮助所需的一切.这只是一些角色,但你经常输入它们的次数是多少?

我使用以下所有内容,当然只使用快捷方式...

  • 承诺
  • commit --amend
  • 重置 - 硬头
  • 变基
  • 查看
  • show-branch(有很多变化)
  • shortlog
  • 引用日志
  • 差异(变化)
  • 日志(在很多变化中)
  • 状态
  • 节目
  • 笔记
  • ...

这只是我的头脑.

我经常不得不使用没有gui的git,因为很多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 aagit ca "..."在,窗户
或使用bash别名gaa/ g aagca "..."/ g ca "..."Linux和Mac上的...

对于我的需求,这似乎是一件明智的事情,可以定制这样的git命令
......并且为了更容易使用,我只是帮助自己使用较少的命令,所以我不必每次都查阅man页面.命令是预定义的,并且查找它们尽可能简单.

我的意思是,毕竟我们是程序员?让事情像我们需要的那样工作是我们的工作.

这是一个额外的截图,这适用于Windows:

使用cmd.exe的脚本

奖励:如果您使用的是Linux或Mac,彩色手册页可以帮助您:

彩色手册页

  • 过度设计 (2认同)

mko*_*bit 16

git var仅使用和过滤那些以alias:

git var -l | grep -e "^alias"
Run Code Online (Sandbox Code Playgroud)


Anu*_*oob 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
...
Run Code Online (Sandbox Code Playgroud)

所以我们可以使用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
Run Code Online (Sandbox Code Playgroud)

我们可以通过调cutalias.每一行的部分来使这个更漂亮,让我们使用这个命令:

git config -l | grep alias | cut -c 7-
Run Code Online (Sandbox Code Playgroud)

哪个印刷品:

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
Run Code Online (Sandbox Code Playgroud)

最后,不要忘记将其添加为别名:

git config --global alias.la "!git config -l | grep alias | cut -c 7-"
Run Code Online (Sandbox Code Playgroud)

请享用!


176*_*ing 11

对于Windows:

git config --list | findstr "alias"
Run Code Online (Sandbox Code Playgroud)


Nag*_*gev 11

只是添加这个,因为它太简单了,而且我在之前的答案中没有看到它(如果我错过了,很抱歉)。

git help -a
Run Code Online (Sandbox Code Playgroud)

您必须滚动到底部(>ma11hew28指出的那样使用)才能查看列表,例如:

Command aliases
   restore-deleted      !git restore $(git ls-files -d)
Run Code Online (Sandbox Code Playgroud)

如果您甚至忘记了这个开关,一个简单的开关git help将帮助您记住:

“git help -a”和“git help -g”列出了可用的子命令和一些概念指南。请参阅“git help”或“git help”以了解特定子命令或概念。

  • `git help -a` 对我来说显示在 `less` 中,所以我可以输入 `G` 或 `&gt;` 跳转到最后一行。或者你可以运行`git help -a | sed '1,/aliases$/d'`. 我通过运行 `git config --global alias.alias "\!git help -a | sed '1,/aliases$/d'"` 将该命令作为别名添加到我的全局 Git 配置文件中。现在我可以运行 `git alias` 来列出我的 Git 别名。 (5认同)

Tom*_*ale 9

搜索或显示所有别名

加入你的.gitconfig[alias]:

aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"
Run Code Online (Sandbox Code Playgroud)

那你可以做

  • git aliases - 显示所有别名
  • git aliases commit - 只包含"提交"的别名


Von*_*onC 9

我在2018年6月用“ 概述列表-最常用的git命令 ” Git 2.18“ use --list-cmds=aliascommit 3301d36)”提到过,carej他的回答中报告。

 git --list-cmds=alias
Run Code Online (Sandbox Code Playgroud)

除了that或of之外git config --get-regexp alias,您还可以将其输出与结合git help,其输出将随着Git 2.14.x / 2.15的变化而变化:

git help co”现在说“ co is aliased to ...”,而不是“ git co is”。

参见Kaartic Sivaraam()的commit b3a8076(2017年9月12日(通过合并JUNIOÇ滨野- -提交5079cc8,2017年9月25日)sivaraam
gitster

help:更改消息以更精确

当用户尝试--help在别名命令上使用' '选项时,有关别名的信息将被打印,如下所示:

$ git co --help
`git co' is aliased to `checkout'
Run Code Online (Sandbox Code Playgroud)

这似乎不正确,因为用户仅对“ co”而不是“ git co”进行了别名。
在用户使用“ tgit”之类的别名的情况下,这甚至可能是不正确的。

$ tgit co --help
`git co' is aliased to `checkout'
Run Code Online (Sandbox Code Playgroud)


Tho*_*mas 8

我在全球范围内使用这个别名~/.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
Run Code Online (Sandbox Code Playgroud)

产生以下输出

$ 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
...       --> ...
Run Code Online (Sandbox Code Playgroud)

(注意:这适用于Windows上的git bash.对于其他终端,您可能需要调整转义.)


说明

  1. !git config --get-regexp ^alias\\. 打印从git配置开始的所有行 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 \")

这只是打印#用于列分离的字符(十六进制043).我使用这个小hack,因此aliases 别名本身并不包含#字符.否则它会#在打印时替换这些字符. 注意:如果您需要带有文字#符号的别名,将此更改为其他字符.


小智 5

两者都运作良好

1 - 使用获取正则表达式

$ git config --get-regexp alias
Run Code Online (Sandbox Code Playgroud)

2 - 使用列表

$ git config --list | grep alias
Run Code Online (Sandbox Code Playgroud)