我如何打印我的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
推荐文章
- 如何在Mac上设置我的默认shell,例如Fish?
- gitignore是什么?
- Git从另一个目录克隆
- 如何在Linux虚拟机的控制台中上下滚动
- 在这个数据库中&,<<,*是什么意思?yml文件?
- 如何获得我的代码的最新版本?
- 如何在git中找到原始/master的位置,以及如何更改它?
- Bower: ENOGIT Git未安装或不在PATH中
- Bitbucket上的Git:总是要求密码,即使上传了我的公共SSH密钥
- Git别名-多个命令和参数
- 如何在终端中提高光标速度?
- 如何添加一个“打开git-bash这里…”上下文菜单到windows资源管理器?
- 修改一个目录下所有文件和文件夹的权限为644/755
- 是否可以在Git中只提取一个文件?
- 当我做“git diff”的时候,我怎么能得到一个并排的diff ?