列出Git别名

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

 $ git config --get-regexp别名

为了这个目的,我创build了一个名为(奇怪的) alias的git别名…如果足够使用别名,

$ git config --global alias.alias "config --get-regexp ^alias\."

请注意,正则expression式确保行以alias.开头alias.

另一种select(纯粹是我觉得容易记住的事情):

git config --list | grep alias

这个答案build立在约翰尼的答案上 。 它适用于如果你不使用git-extras git-alias

在Linux上,运行一次:

 git config --global alias.alias "! git config --get-regexp ^alias\. | sed -es/^alias\.// -es/\ /\ =\ /" 

这将创build一个名为alias的永久git别名,它存储在~/.gitconfig文件中。 使用它将以~/.gitconfig文件中几乎相同的格式列出所有的git别名。 要使用它,请键入:

 $ git alias loga = log --graph --decorate --name-status --all alias = ! git config --get-regexp ^alias\. | sed -es/^alias\.// -es/\ /\ =\ / 

以下可选考虑事项适用:

  • 要防止别名如上所述,append | grep -v ^'alias ' | grep -v ^'alias '在closures双引号之前。 我不build议这样做的Linux用户,以便他们不要忘记,命令alias只是一个别名,不是git的function。

  • 要对列出的别名进行sorting,请附加| sort 在结束双引号之前| sort 。 或者,您可以保留~/.gitconfig的别名。

  • 要将别名添加为系统范围的别名,请将--global (对于当前用户)replace为--system (对于所有用户)。 这通常在/etc/gitconfig文件中。

下面的工作在Linux,MacOSX和Windows(带有msysgit)下。

使用git la在.gitconfig中显示别名

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

关于上面评论中的“不需要”部分,我基本上创build了一个像我的别名概述的手册页。 为什么所有的大惊小怪? 这不是完整的矫枉过正?

继续阅读…

我已经在我的.gitconfig中设置了这样的命令,分隔如TAB = TAB

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

并简单地定义另一个别名来grep TAB =定义的别名的一部分。 (所有其他选项在定义中的“=”之前和之后都没有制表符,只是空格)。

没有附加到别名的注释也有一个TAB = = = = =附加,所以它们显示在grepping之后。

为了更好地查看,我将grep输出pipe道输送到更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控制台,我用terminal颜色给输出着色:

  • 所有“=”都以红色打印
  • 所有“#”都以绿色打印

高级版本:(彩色)

  la = "!grep '\t=' ~/.gitconfig | sed -e 's/=/^[[0;31m=^[[0m/g' | sed -e 's/#.*/^[[0;32m&^[[0m/g' | less -R" 

基本上和上面一样,只是sed用法被添加到输出的颜色代码。

需要less一些-R标志才能显示较less的颜色。

(我最近发现,在窗口下面有一个滚动条的长命令在移动设备上没有正确显示:它们的文本被截断,滚动条只是丢失,最后一个代码片断可能就是这种情况,当在旅途中在这里查看代码片段时,请介意)


为什么要这样的魔法工作?

我有一个半英里的别名,适合我的需要。
也有一些随着时间的推移改变 ,所以最好有一个最新的清单在手边是parsing.gitconfig。

A ****短****我的.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 

这种方式不需要inputgit help submodule ,也不需要git h submodule ,只需要gh submodule就可以获得帮助。 这只是一些字符,但你多久打一次?

我使用以下所有内容,当然只能使用快捷方式

  • 承诺
  • 提交 – 美元
  • 重置 – 硬头
  • 变基
  • 查看
  • 显示分支(在很多变化)
  • shortlog
  • 引用日志
  • 差异(在变化)
  • 日志(在很多变化)
  • 状态
  • 显示
  • 笔记

这只是我的头顶。

我经常不得不使用git而不使用gui,因为很多git命令在任何graphics前端中都没有正确实现。 但是每次我把它们用起来,大部分都是一样的。

在最后一段提到的“未执行”部分:
我还没有在GUI中find与此相比的东西:
sba = show-branch --color=always -a --more=10 --no-name – 显示所有本地和远程分支以及它们在其中的提交
ccm = "!git reset --soft HEAD~ && git commit" – 更改上次提交消息

从更简单的angular度来看:
你多久git add . 或者git commit -am "..." ? 甚至不计算其余的…
让事情工作像git aagit ca "..."在Windows中,
或与bash别名gaa / g aagca "..." / g ca "..."在Linux和Mac的…

为了我的需要,这似乎是一个聪明的事情,这样定制git命令…
…为了更容易的使用,我只是帮助自己减less使用的命令,所以我不必每次都去查阅手册页。 命令是预定义的,查找起来非常简单。

我的意思是,我们毕竟是程序员? 让我们需要的东西工作是我们的工作。

这里是一个额外的截图,这在Windows中的作品:

使用cmd.exe的脚本

奖金:如果你在Linux或Mac上,彩色手册页可以帮助你很多:

彩色的手册页

正如提到的其他答案, git config -l列出了您的configuration文件中的所有configuration细节。 以下是我的configuration输出的一个部分例子:

 ... 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来清除别名行 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.来使这个更漂亮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-" 

请享用!

使用git var并只过滤那些以alias开头的alias

 git var -l | grep -e "^alias" 

对于Windows:

 git config --list | findstr "alias" 

search或显示所有别名

添加到你的.gitconfig下的[alias]

 aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#" 

那你可以做

  • git aliases – 显示所有别名
  • git aliases commit – 只有包含“提交”

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

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

有一个内置的function…尝试

 $ __git_aliases 

列出所有的别名:)

又一个git别名(称为alias ),打印出git别名:添加以下到您的gitconfig [alias]部分:

 [alias] # lists aliases matching a regular expression alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f" 

使用示例,给出完整别名(完全匹配别名):即, ^foobar$ ),并简单显示值:

 $ git alias st alias.st status -s $ git alias dif alias.dif diff 

或者,给regexp,它显示所有匹配的别名和值:

 $ 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}.. 

警告:引用正则expression式来防止shell扩展为glob,尽pipe在没有文件匹配模式的情况下在技术上不是必需的。 此外:任何正则expression式都很好,除了^ (模式开始)和$ (模式结束)不能使用; 它们是隐含的。 假设你不使用git-extras git-alias

另外,显然你的别名会有所不同。 这些只是我configuration的一些。 (也许你会发现它们也很有用。)

除了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( sivaraam ) 提交的b3a8076 (2017年9月12日) 。
(由Junio C gitster合并- gitster -在承诺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'