我如何打印我的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上,彩色手册页可以帮助你很多:
彩色手册页
其他回答
使用Bash列出全局和本地Git别名。即使没有安装Git,也可以正常工作。
$ cat ~/.gitconfig .git/config 2>/dev/null | sed -n '/alias/,/\[/p' | grep -v '^\['
co = checkout
br = branch
ci = commit
st = status
2>/dev/null -隐藏配置文件不存在时的错误 Sed -n '/alias/,/\[/p' -列出alias部分的内容 Grep -v '^\[' -隐藏部分标记(以左方括号开始)
相同命令的Bash别名
$ alias gita="cat ~/.gitconfig .git/config 2>/dev/null | sed -n '/alias/,/\[/p' | grep -v '^\['"
$ gita
co = checkout
br = branch
ci = commit
st = status
打开。gitconfig文件(C:\Users\user.gitconfig)—Windows 在[别名]下复制并粘贴以下代码 别名= !git config——list | grep ^别名\\。| cut -c 7- | grep - ei——color \"$1\" "#" 在终端git alias——列出所有别名 在终端git别名commit——列出所有与提交相关的别名 获得所有别名的列表,而不记得代码:)
有一个内置的功能…试一试
$ __git_aliases
列出所有的别名:)
我在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'
你可以创建一个别名来显示你机器上的所有git别名。运行下面的代码。
git config --global alias.alias "! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /"
然后,只需运行git别名。
推荐文章
- 如何从终端/命令行调用VS代码编辑器
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- “你有邮件”的消息在终端,os X
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支