8 个让效率倍增的 Git 别名

使用别名来创建常用或复杂 Git 命令的快捷方式。
127 位读者喜欢这篇文章。

优秀的文章《7 个改变我人生的 Git 技巧》启发我写了另一篇关于 Git 功能的文章,这个功能对我在命令行中使用 Git 的体验产生了重大影响:别名。

定义 Git 别名作为命令的替代品提供了两个主要好处

  • 它简化了具有许多选项的长命令,使它们更短且更易于记忆。
  • 它缩短了常用命令,以便您可以更高效地工作。

如何定义和使用别名

要定义 Git 别名,请使用带有别名和要替换的命令的 git config 命令。例如,要为 git push 创建别名 p

$ git config --global alias.p 'push'

您可以通过将别名作为参数提供给 git 来使用别名,就像任何其他命令一样

$ git p

要查看所有别名,请使用 git config 列出您的配置

$ git config --global -l
user.name=ricardo
user.email=ricardo@example.com
alias.p=push

您还可以使用您喜欢的 shell(例如 Bash 或 Zsh)定义别名。但是,使用 Git 定义别名提供了使用 shell 所不具备的几个功能。首先,它允许您在不同的 shell 中使用别名,而无需额外的配置。它还与 Git 的自动纠错功能集成,因此当您输错命令时,Git 可以建议别名作为替代方案。最后,Git 将您的别名保存在用户配置文件中,允许您通过复制单个文件将它们传输到其他机器。

无论您使用哪种方法,定义别名都可以改善您使用 Git 的整体体验。有关定义 Git 别名的更多信息,请查看 Git Book

8 个有用的 Git 别名

现在您已经知道如何创建和使用别名,请查看一些有用的别名。

1. Git 状态

Git 命令行用户经常使用 status 命令来查看已更改或未跟踪的文件。默认情况下,此命令提供带有许多行的详细输出,这可能不是您想要或需要的。您可以使用单个别名来解决这两个问题:定义别名 st 以缩短带有选项 -sb 的命令,以输出包含分支信息的较少详细的状态

$ git config --global alias.st 'status -sb'

如果您在干净的分支上使用此别名,则您的输出如下所示

$  git st
## master

在具有已更改和未跟踪文件的分支上使用它会产生以下输出

$ git st
## master
 M test2
?? test3

2. Git log --oneline

创建一个别名以将您的提交显示为单行,以获得更紧凑的输出

$ git config --global alias.ll 'log --oneline'

使用此别名可提供所有提交的简短列表

$ git ll
33559c5 (HEAD -> master) Another commit
17646c1 test1

3. Git 最近一次提交

这显示了有关您最近一次提交的详细信息。这扩展了 Git Book 中关于 别名 的章节中的一个示例

$ git config --global alias.last 'log -1 HEAD --stat'

使用它来查看最近一次提交

$ git last
commit f3dddcbaabb928f84f45131ea5be88dcf0692783 (HEAD -> branch1)
Author: ricardo <ricardo@example.com>
Date:   Tue Nov 3 00:19:52 2020 +0000

    Commit to branch1

 test2 | 1 +
 test3 | 0
 2 files changed, 1 insertion(+)

4. Git 提交

当您对 Git 存储库进行更改时,您会经常使用 git commit。使用 cm 别名使 git commit -m 命令更高效

$ git config --global alias.cm 'commit -m'

由于 Git 别名会扩展命令,因此您可以在执行期间提供其他参数

$ git cm "A nice commit message"
[branch1 0baa729] A nice commit message
 1 file changed, 2 insertions(+)

5. Git 远程仓库

git remote -v 命令列出所有配置的远程存储库。使用别名 rv 缩短它

$ git config --global alias.rv 'remote -v'

6. Git diff

git diff 命令显示不同提交或提交与工作树之间文件之间的差异。使用别名 d 简化它

$ git config --global alias.d 'diff'

标准的 git diff 命令对于小的更改效果很好。但对于更复杂的更改,诸如 vimdiff 之类的外部工具使其更有用。创建别名 dv 以使用 vimdiff 显示差异,并使用 -y 参数跳过确认提示

$ git config --global alias.dv 'difftool -t vimdiff -y'

使用此别名显示两个提交之间 file1 的差异

$ git dv 33559c5 ca1494d file1

7. Git config list

gl 别名使列出所有用户配置更容易

$ git config --global alias.gl 'config --global -l'

现在您可以查看所有定义的别名(和其他配置选项)

$ git gl
user.name=ricardo
user.email=ricardo@example.com
alias.p=push
alias.st=status -sb
alias.ll=log --oneline
alias.last=log -1 HEAD --stat
alias.cm=commit -m
alias.rv=remote -v
alias.d=diff
alias.dv=difftool -t vimdiff -y
alias.gl=config --global -l
alias.se=!git rev-list --all | xargs git grep -F

8. Git 搜索提交

Git 别名允许您定义更复杂的别名,例如通过以 ! 字符作为前缀来执行外部 shell 命令。您可以使用它来执行自定义脚本或更复杂的命令,包括 shell 管道。

例如,定义别名 se 以在您的提交中搜索

$ git config --global alias.se '!git rev-list --all | xargs git grep -F'

使用此别名在您的提交中搜索特定字符串

$ git se test2
0baa729c1d683201d0500b0e2f9c408df8f9a366:file1:test2
ca1494dd06633f08519ec43b57e25c30b1c78b32:file1:test2

自动纠正您的别名

使用 Git 别名的一个很酷的好处是它与自动纠错功能的原生集成。如果您犯了错误,默认情况下,Git 会建议与您键入的内容相似的命令,包括别名。例如,如果您键入 ts 而不是 st 表示 status,Git 将建议正确的别名

$ git ts
git: 'ts' is not a git command. See 'git --help'.

The most similar command is
        st

如果您启用了自动纠错,Git 将自动执行正确的命令

$ git config --global help.autocorrect 20
$ git ts
WARNING: You called a Git command named 'ts', which does not exist.
Continuing in 2.0 seconds, assuming that you meant 'st'.
## branch1
?? test4

优化 Git 命令

Git 别名是一个有用的功能,它通过优化常用和重复命令的执行来提高您的效率。Git 允许您定义任意数量的别名,一些用户定义了很多。我更喜欢只为我最常用的命令定义别名——定义太多会使它们更难记住,并且可能需要我查找它们才能使用它们。

有关别名的更多信息,包括其他有用的别名,请参阅 Git Wiki 的别名页面

接下来阅读什么

您离不开的 Bash 别名

厌倦了一遍又一遍地输入相同的长命令?您是否觉得在命令行上工作效率低下?Bash 别名可以带来天壤之别。

(团队,Red Hat)
2019 年 7 月 31 日
标签
Avatar
Ricardo Gerardi 是 Enable Sysadmin 和 Enable Architect 的技术社区倡导者。他之前是 Red Hat Canada 的首席顾问,专门从事 Ansible 和 OpenShift 的 IT 自动化。

评论已关闭。

© 2025 open-source.net.cn. All rights reserved.