使用别名为最常见或最复杂的Git命令创建快捷方式。这篇优秀的文章《改变我使用 Git 工作方式的七个技巧》启发我写了另一个Git特性,它对我在命令行上使用Git的体验产生了重大影响:别名。定义Git别名来替换命令有两个主要好处。它通过许多选项简化了长命令,使它们更短且更容易记住。常用命令被缩短,使您的工作更有效率。如何定义和使用别名要为Git定义别名,请使用gitconfig命令,然后是别名和要替换的命令。例如,为gitpush创建别名p:$gitconfig--globalalias.p'push'您可以通过将别名作为参数传递给git来使用别名,就像任何其他命令一样:$gitp查看全部别名,使用gitconfig列出你的配置:$gitconfig--global-luser.name=ricardouser.email=ricardo@example.comalias.p=push你也可以使用你喜欢的shell定义别名,比如Bash或Zsh。但是,使用Git定义别名有几个shell无法实现的功能。首先,它允许您在不同的shell中使用别名而无需额外配置。此外,它还集成了Git的自动更正功能,因此当您输入错误的命令时,Git可以为您建议正确的别名。最后,Git还将别名保存在用户配置文件中,您可以通过复制文件将其传输到其他机器。无论您使用哪种方法,定义别名都可以改善您使用Git的整体体验。有关定义Git别名的更多信息,请参阅《Git Book》。8个有用的Git别名现在您知道了如何创建和使用别名,让我们来看看一些有用的别名。1.GitstatusGit命令行用户经常使用status命令来查看已更改或未跟踪的文件。默认情况下,此命令提供多行详细输出,您可能不希望或不需要这些输出。您可以使用别名来处理这两个组件。定义别名st以缩短命令,并使用选项-sb输出更简洁的状态和分支信息。$gitconfig--globalalias.st'status-sb'如果你在一个干净的分支上使用这个别名,你的输出将是这样的:$gitst##masteronabranchwithchangedanduntrackedfiles在一个分支上使用它将产生这样的输出:$gitst##masterMtest2??test32,Git单行日志创建一个别名以在一行中显示您的提交,使输出更紧凑:$gitconfig--globalalias。ll'log--oneline'使用这个别名给出了所有提交的简短列表:$gitll33559c5(HEAD->master)Anothercommit17646c1test13,lastcommitfromGit这将显示你最后一次提交的细节。下面是扩展《Git Book》中别名章节的示例:$gitconfig--globalalias.last'log-1HEAD--stat'使用它来查看最后一次提交:$gitlastcommitf3dddcbaabb928f84f45131ea5be88dcf0692783(HEAD->branch1)ricardo日期:2020年11月3日星期二00:19:52+0000提交到branch1test2|1+测试3|02个文件更改,1个插入(+)4。修改的时候,经常会用到gitcommit。使用cm别名使gitcommit-m命令更高效:$gitconfig--globalalias.cm'commit-m'因为Git别名扩展了命令,你可以在执行期间提供额外的参数:$gitcm"commitmessage[branch10baa729]一个nicecommitmessage1文件改了,2个插入(+)5,Git远程仓库gitremote-v命令列出了所有配置的远程仓库。用别名rv缩短它:$gitconfig--globalalias.rv'remote-v'6.Gitdiffgitdiff命令可以显示来自不同提交的文件之间或提交与工作树之间的差异。使用d别名简化它:$gitconfig--globalalias.d'diff'标准的gitdiff命令适用于小的更改,但对于更复杂的更改,外部工具如vimdiff更有用。创建别名dv以使用vimdiff显示差异并使用y参数跳过确认提示:$gitconfig--globalalias.dv'difftool-tvimdiff-y'使用此别名显示file1中两次提交之间的差异:$gitdv33559c5ca1494dfile1vim-diff结果7、Gitconfiglistglaliases可以更方便的列出所有用户配置:$gitconfig--globalalias.gl'config--global-l'nowyoucanseealldefinedaliases(和其他配置选项):$gitgluser.name=ricardouser.email=ricardo@example.comalias.p=pushalias.st=status-sbalias.ll=log--onelinealias.last=log-1HEAD--statalias。cm=commit-malias.rv=远程-valias.d=diffalias.dv=difftool-tvimdiff-yalias.gl=config--global-lalias.se=!gitrev-list--all|xargsgitgrep-F8,SearchandsubmitGitaliases允许你定义更复杂的别名,比如执行外部shell命令,你可以加上!别名前的字符。您可以使用它来执行自定义脚本或更复杂的命令,包括shell管道。例如,定义一个别名来搜索你的提交:$gitconfig--globalalias.se'!gitrev-list--all|xargsgitgrep-F'使用此别名在提交中搜索特定字符串:$gitsetest20baa729c1d683201d0500b0e2f9c408df8f9a366:file1:test2ca1494dd06633f08519ec43b57e25c30b1c78b32:file1:testes如果您输入错误,默认情况下Git会建议一个与您输入的命令相似的命令,包括别名。例如,如果您将status键入ts而不是st,Git将推荐正确的别名:$gittsgit:'ts'isnotagitcommand。请参阅“git--help”。如果您启用了自动更正,最相似的命令是st,Git会自动执行正确的命令:$gitconfig--globalhelp.autocorrect20$gittsWARNING:YoucalledaGitcommandnamed'ts',它不存在。在2.0秒后继续,假设您的意思是“st”。##branch1?test4优化Git命令Git别名是一项有用的功能,可以优化常见重复命令的执行,从而提高您的效率。Git允许你定义任意数量的别名,有些用户定义了很多别名。我更喜欢只为我最常使用的命令定义别名——定义太多将很难记住并且可能需要查找才能使用。有关别名的更多信息,包括其他有用的内容,请参阅Gitwiki的别名页面。