如何打印我的git别名列表,即类似于bash alias
命令的内容?
答案 0 :(得分:432)
$ git config --get-regexp alias
答案 1 :(得分:133)
为了这个目的,我创建了一个名为(奇怪的是)alias
的git别名......如果你足够使用别名,我会不时使用...
$ git config --global alias.alias "config --get-regexp ^alias\."
注意,正则表达式确保该行以alias.
开头。
答案 2 :(得分:72)
另一种选择(纯粹是我容易记住的东西):
git config --list | grep alias
答案 3 :(得分:55)
此答案建立在answer johnny之上。如果您未使用git-alias
中的git-extras
,则适用。
在Linux上,运行一次:
git config --global alias.alias "! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /"
这将创建一个名为alias
的永久git别名,该别名存储在~/.gitconfig
文件中。使用它将列出所有git别名,其格式与~/.gitconfig
文件中的格式几乎相同。要使用它,请键入:
$ git alias
loga = log --graph --decorate --name-status --all
alias = ! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /
以下可选注意事项适用:
要防止别名alias
如上所列,请在结束双引号之前附加| grep -v ^'alias '
。我不建议Linux用户这样做,这样他们就不会忘记命令alias
只是别名而不是git的功能。
要对列出的别名进行排序,请在结束双引号之前附加| sort
。或者,您可以将别名保留在~/.gitconfig
已排序。
要将别名添加为系统范围的别名,请将--global
(对于当前用户)替换为--system
(适用于所有用户)。这通常在/etc/gitconfig
文件中。
答案 4 :(得分:26)
我听过'bash脚本'了吗? ;)
关于上面评论中的“不需要”部分,我基本上创建了一个类似于别名概述的手册页。为什么大惊小怪呢?是不是完全矫枉过正?
继续阅读...
我在.gitconfig中设置了这样的命令,分隔为 TAB = TAB :< / p>
[alias]
alias1 = foo -x -y --z-option
alias2 = bar -y --z-option --set-something
并简单地定义另一个别名来grep TAB = 部分定义的别名。 (所有其他选项在其定义中的'='之前和之后都没有选项卡,只有空格。)
未附加到别名的注释也有 TAB = = = 附加了 = ,因此在点击后会显示它们。
为了更好地查看,我将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
标志需要更少的颜色显示。
(我最近发现,在他们的窗口下有一个滚动条的长命令在移动设备上没有正确显示:它们的文本被截断,滚动条就丢失了。这可能是最后一个代码片段的情况,在旅途中查看代码片段时请记住这一点。)
我有一个半英里的别名,根据我的需要量身定制 其中一些会随着时间的推移而改变,所以最好有一个最新的列表来解析.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 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 "..."
?不计算其余的......
让事情变得像Windows git aa
或git ca "..."
一样有效
或者在linux和Mac上使用bash别名gaa
/ g aa
或gca "..."
/ g ca "..."
...
根据我的需要,这样做似乎很明智,可以像这样定制git命令...... ...为了更容易使用我只是帮助自己使用较少的命令,所以我不必每次都查阅手册页。命令是预定义的,并且查找起来非常简单。
我的意思是,毕竟我们是程序员?按照我们需要的方式开展工作是我们的工作。
这是一个额外的屏幕截图,适用于Windows:
<强> colorized man pages 强>
答案 5 :(得分:16)
使用git var
并仅过滤以git var -l | grep -e "^alias"
开头的那些:
clarity
答案 6 :(得分: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
...
因此我们可以使用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
我们可以通过cut
每行的alias.
部分使这个更漂亮,让我们留下这个命令:
git config -l | grep alias | cut -c 7-
打印哪些:
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
最后,不要忘记将其添加为别名:
git config --global alias.la "!git config -l | grep alias | cut -c 7-"
享受!
答案 7 :(得分:9)
for windows:
git config --list | findstr "alias"
答案 8 :(得分:9)
添加到.gitconfig
下的[alias]
:
aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"
然后你可以做
git aliases
- 显示所有别名git aliases commit
- 仅包含&#34; commit&#34; 答案 9 :(得分:7)
我在全局~/.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
生成以下输出
$ 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
... --> ...
(注意:这适用于我在 git bash on Windows 。对于其他终端,您可能需要调整转义。)
!git config --get-regexp ^alias\\.
打印git config中以alias.
sed -e s/^alias.//
从alias.
sed -e s/\\ /\\ $(printf \"\\043\")--\\>\\ /
用\\ $(printf \"\\043\")--\\>
(评估为#-->
)替换第一次出现的空格。column -t -s $(printf \"\\043\")
将所有行格式化为均匀间隔的列表。评估为$(printf \"\\043\")
的字符#
用作分隔符。sort -k 1
根据第一列中的值对所有行进行排序$(printf \&#34; \ 043 \&#34;)
这只会打印用于列分隔的字符#
(十六进制043)。我使用这个小hack,因此aliases
别名本身并不包含#
字符。否则,它将在打印时替换那些#
个字符。
注意:如果您需要带有文字#
符号的别名,请将其更改为其他字符。
答案 10 :(得分:3)
除了git config --get-regexp alias
之外,您还可以将其输出与git help
结合使用,其输出将随Git 2.14.x / 2.15而变化:
“
git help co
”现在说“co is aliased to ...
”,而不是“git co is
”。
commit b3a8076见Kaartic Sivaraam (sivaraam
)(2017年9月12日)
(Junio C Hamano -- gitster
--合并于commit 5079cc8,2017年9月25日)
help
:更改消息更精确当用户尝试在别名命令上使用“
--help
”选项时,打印有关别名的信息,如下所示:
$ git co --help
`git co' is aliased to `checkout'
这似乎不正确,因为用户的别名仅为“
co
”,而非“git co
”。
在用户使用“tgit
”等别名的情况下,这甚至可能不正确。
$ tgit co --help
`git co' is aliased to `checkout'
答案 11 :(得分:2)
有一个内置功能......试试
$ __git_aliases
列出所有别名:)
答案 12 :(得分:2)
两者都很好
1 - 使用获取正则表达式
$ git config --get-regexp alias
2 - 使用列表
$ git config --list | grep alias
答案 13 :(得分:1)
如果您知道别名的名称,可以使用--help
选项对其进行描述。例如:
$ git sa --help
`git sa' is aliased to `stash'
$ git a --help
`git a' is aliased to `add'
答案 14 :(得分:1)
从git 2.18开始,您可以使用git --list-cmds=alias
答案 15 :(得分:1)
我喜欢@Thomas的答案,并且做了一些修改。
功能:
git config --get-regexp ^.
)# .gitconfig
[alias]
show-cmd = "!f() { \
sep="㊣" ;\
name=${1:-alias};\
echo -n -e '\\033[48;2;255;255;01m' ;\
echo -n -e '\\033[38;2;255;0;01m' ;\
echo "$name"; \
echo -n -e '\\033[m' ;\
git config --get-regexp ^$name\\..*$2+ | \
cut -c 1-40 | \
sed -e s/^$name.// \
-e s/\\ /\\ $(printf $sep)--\\>\\ / | \
column -t -s $(printf $sep) | \
sort -k 1 ;\
}; f"
git show-cmd
列表别名git show-cmd "" st
列表别名,它应包含字符串st
git show-cmd i18n
显示i18n
设置git show-cmd core editor
显示core
设置,其中应包含editor
在Windows上也可以正常工作
您可以使用以下语法在.gitconfig
上写长脚本:
[alias]
your-cmd = "!f() { \
\
}; f"
name=${1:-alias}
与name = $1 if $1 else -alias
echo -n -e
(更多echo)
'\\033[38;2;255;0;01m'
(更多SGR parameters)
\\033[48;
:48表示背景颜色。\\033[38;2;255;0;0m
:38表示前景色。 255; 0; 0 =红色 cut -c 1-40
为避免您的命令过长,请仅使用40个字符。
sed -e 's/be_replace_string/new_string/'
将字符串替换为新字符串。 (如果要放入特殊字符(例如space
,>
...),则应添加\\
作为前缀。
column -t -s $(printf $sep)
将所有行格式化为间距均匀的列表。
sort -k 1
根据第一列中的值对所有行进行排序
答案 16 :(得分:0)
打印出git别名的另一个git
别名(称为alias
):将以下内容添加到gitconfig [alias]
部分:
[alias]
# lists aliases matching a regular expression
alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
示例用法,给出完整的别名(完全匹配别名:ie ^foobar$
),只显示值:
$ git alias st
alias.st status -s
$ git alias dif
alias.dif diff
或者,给regexp,它显示所有匹配的别名&amp;价值观:
$ git alias 'dif.*'
alias.dif diff
alias.difs diff --staged
alias.difh diff HEAD
alias.difr diff @{u}
alias.difl diff --name-only
$ git alias '.*ing'
alias.incoming !git remote update -p; git log ..@{u}
alias.outgoing log @{u}..
警告:引用regexp以防止shell扩展为glob,尽管如果/当没有文件与模式匹配时,技术上不需要。另外:任何正则表达式都没问题,除了^
(模式开始)和$
(模式结束)不能使用;他们暗示着。假设您没有使用git-alias
中的git-extras
。
另外,显然你的别名会有所不同;这些只是我配置的一些。 (也许你会发现它们也很有用。)
答案 17 :(得分:0)
打开 .gitconfig 文件 (C:\Users\user.gitconfig) --Windows
在[别名]下复制并粘贴以下代码
alias = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"
在终端 git alias
-- 列出所有别名
在终端 git alias commit
-- 列出所有与提交相关的别名
在不记住代码的情况下获取所有别名的列表:)