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


当前回答

以下是在Linux、MacOSX和Windows(使用msysgit)下的工作。

使用gitla来显示.gitconfig中的别名

我听到“bash脚本”了吗?;)

关于上面评论中的“不需要”部分,我基本上为我的别名创建了一个类似概述的手册页。为什么要这么大惊小怪?那不是太过分了吗?

继续阅读…

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

[alias]
        alias1            =            foo -x -y --z-option
        alias2            =            bar -y --z-option --set-something

并简单地定义另一个别名来grep已定义别名的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的-R标志用于获得less中显示的颜色。

(我最近发现,带有滚动条的长命令在移动设备上不能正确显示:它们的文本被切断,滚动条也不见了。这可能是这里的最后一个代码片段的情况,在查看这里的代码片段时请记住这一点。)


为什么要施展这样的魔法呢?

我有很多化名,都是为我量身定做的。 此外,其中一些会随着时间的推移而变化,因此,掌握最新列表的最佳方法是解析.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

在我的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帮助子模块,也不需要git h子模块,只需要gh子模块就可以获得帮助。只是一些字符,但你多久打一次?

我使用以下所有的方法,当然只有在使用快捷键的时候……

添加 提交 提交,修改 复位——硬磁头 推 获取 变基 结帐 分支 Show-branch(有很多变体) shortlog reflog 差异(变奏) Log(有很多变化) 状态 显示 笔记 ...

这只是我的想法。

我经常不得不在没有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 aa或git ca“…”在windows中工作, 或者使用bash别名gaa/g aa或gca "…"/g ca "…"在Linux和mac上…

从我的需求来看,这样定制git命令似乎是一件聪明的事情…… ... 为了更容易使用,我只是帮助自己较少使用的命令,所以我不必每次都查阅手册页。命令是预定义的,查找它们非常简单。

我是说,我们毕竟是程序员?我们的工作就是让事情按照我们需要的那样运转起来。

这是一个额外的截图,这在Windows中是有效的:

好处:如果你在linux或mac上,彩色手册页可以帮助你很多:

彩色手册页

其他回答

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

 git --list-cmds=alias

除此之外,或者git config——get-regexp别名,你可以将它的输出与git帮助结合起来,它的输出将在git 2.14.x/2.15中发生变化:

“git help co”现在说“co is alias to…”,而不是“git co is”。

参见Kaartic Sivaraam提交b3a8076(2017年9月12日)。 (由Junio C Hamano—gitster—在commit 5079cc8中合并,2017年9月25日)

帮助:将信息更改为更精确的信息 当用户尝试在一个别名命令上使用'——help'选项时,关于别名的信息将打印如下所示:

$ git co --help
`git co' is aliased to `checkout'

这似乎是不正确的,因为用户只有'co'而不是'git co'的别名。 在用户使用了'tgit'这样的别名的情况下,这甚至可能是不正确的。

$ tgit co --help
`git co' is aliased to `checkout'

如果您知道别名的名称,您可以使用——help选项来描述它。例如:

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

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

'alias' is aliased to '!git config --list | grep 'alias\.' | sed 
's/alias\.\([^=]*\)=\(.*\)/\1\  => \2/' | sort'
a        => !git add . && git status
aa       => !git add . && git add -u . && git status
ac       => !git add . && git commit
acm      => !git add . && git commit -m

我创建了一个git别名(奇怪的是)别名正是为了这个目的…如果你经常使用混叠的话,会很方便。

$ git配置——全局别名。别名“config -get-regexp ^ Alias \.”

注意,regex确保行以别名开始。

你可以在正则表达式^alias中使用——get-regexp,即所有以alias开头的配置

git config --get-regexp ^alias