Wil*_*ell 463
$ git config --get-regexp alias
joh*_*nny 145
alias为了这个目的,我创建了一个名为(奇怪的是)的git别名......如果你足够使用别名,我会不时使用它...
$ git config --global alias.alias "config --get-regexp ^alias\."
注意,正则表达式确保该行开头alias..
Acu*_*nus 93
这个答案建立在答案由约翰尼.它如果你不使用适用git-alias的git-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文件中.
Rim*_*ian 79
另一种选择(纯粹是我容易记住的东西):
git config --list | grep alias
sja*_*jas 27
我听过'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需要获得帮助所需的一切.这只是一些角色,但你经常输入它们的次数是多少?
我使用以下所有内容,当然只使用快捷方式...
这只是我的头脑.
我经常不得不使用没有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 "..."在,窗户
或使用bash别名gaa/ g aa或gca "..."/ g ca "..."Linux和Mac上的...
对于我的需求,这似乎是一件明智的事情,可以定制这样的git命令
......并且为了更容易使用,我只是帮助自己使用较少的命令,所以我不必每次都查阅man页面.命令是预定义的,并且查找它们尽可能简单.
我的意思是,毕竟我们是程序员?让事情像我们需要的那样工作是我们的工作.
这是一个额外的截图,这适用于Windows:

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)
我们可以通过调cut出alias.每一行的部分来使这个更漂亮,让我们使用这个命令:
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”以了解特定子命令或概念。
加入你的.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 - 只包含"提交"的别名我在2018年6月用“ 概述列表-最常用的git命令 ” Git 2.18“ use --list-cmds=alias(commit 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)
我在全球范围内使用这个别名~/.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.对于其他终端,您可能需要调整转义.)
!git config --get-regexp ^alias\\. 打印从git配置开始的所有行 alias.sed -e s/^alias.//alias.从线上删除sed -e s/\\ /\\ $(printf \"\\043\")--\\>\\ /用\\ $(printf \"\\043\")--\\>(计算结果为#-->)替换第一次出现的空格.column -t -s $(printf \"\\043\")将所有行格式化为均匀分布的列表.的字符$(printf \"\\043\"),其计算结果为#用作隔板.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)
| 归档时间: |
|
| 查看次数: |
121479 次 |
| 最近记录: |