[译] 我经常使用的 Git 别名

我经常使用的 Git 别名(由于我实在太懒了)

我真的很烦输入 git 命令,即便是很短的。

写于 2019 年 9 月 16 日,更新于 2019 年 9 月 17 日html

几年前,当我第一次开始构建一些比较大的我的项目时,我终于开始频繁的使用 Git。如今,输入 git statusgit push 这样的命令对我来讲易如反掌,可是若是你有一些使用 Git 的经验,你必定知道有一些命令会很是冗长。前端

好比说我常遇到这样的命令:android

$ git commit --amend --no-edit
复制代码

这条命令会把你暂存的修改并入你最近的一次 commit,而且不会修改此次 commit 的信息(这样 Git 也就不会打开一个文件编辑界面了)。它最常常的用途是修改刚刚提交的 commit。也许我太粗心了,老是在刚提交完一条 commit 还不到 30 秒,就发现一个拼写错误或者忘了删除了调式信息了 😠。ios

输入 git commit --amend --no-edit 这 28 个字符很快就会让人感到乏味。我如今正着迷于优化项目(甚至是在还不该该进行优化的时候我就开始行动了🤷),因此某天我就开始花时间思考如何优化个人 git 命令…git

我配置的 git 别名

当你用 google 搜索下如“简化 git 命令”这样的内容,你将会很快的找到关于 Git 别名的信息。事实是,简写命令的方法已经内建在 Git 中了!你只须要告知 Git 你想要配置的 git 别名的信息便可。例如,你能够经过将以下这行代码复制粘贴到你的控制台并执行,就能够将 status 简写为 sgithub

git config --global alias.s status
复制代码

这行命令其实是更新了你的 .gitconfig 文件,该文件用来保存全局 Git 配置:shell

~/.gitconfig
[alias]
  s = status
复制代码

如今,只要你输入别名 s,Git 就会自动用 status 来替换掉它!后端

下面这些是我最经常使用的 Git 别名:bash

~/.gitconfig
[alias]
  s = status
  d = diff
  co = checkout
  br = branch
  last = log -1 HEAD
  cane = commit --amend --no-edit
  lo = log --oneline -n 10
  pr = pull --rebase
复制代码

个人 .gitconfig 文件session

git 别名
git config --global alias.s status
git config --global alias.d diff
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.last "log -1 HEAD"
git config --global alias.cane "commit --amend --no-edit"
git config --global alias.pr "pull --rebase"
git config --global alias.lo "log --oneline -n 10"
复制代码

若是你也想使用这些 git 别名,将这些命令拷贝并粘贴到控制台执行便可!

最后,这儿还有一个我经常使用的 bash 命令简写:

~/.bash_profile
# ... 其余内容

alias g=git
复制代码

你可使用任何编辑器,来将这些内容加入到你的 .bash_profile 文件中。

这是一个 Bash 别名配置,它的功能就正如你所想的那样。若是你使用其余的 shell,你能够在它的相似的功能中完成(例如 Zsh 别名配置)。

一切就绪。如今你能够这样使用 Git 了:

$ g s
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
复制代码
$ g br
* master
复制代码
$ g co -b new-branch
Switched to a new branch 'new-branch'
复制代码
$ g lo
Author: Victor Zhou <vzhou842@gmail.com>
Date:   Mon Aug 26 01:16:49 2019 -0700

    Bump version to 1.1.1
复制代码

实际上它们真的有用吗…

也许有用?这实际上是因人而异的。若是你和我同样,须要作一些有点强迫症的事情,好比老是习惯性的重复输入 “git status”,那么它确实能够节省你一些时间:

参见 Victor Zhou (@victorczhou) 发布于 2019 年 9 月 15 日的 twitter

我我的认为,这样作代价很小(每台新设备的配置大概只须要 30 秒),而你就可以获得一个速度更快而且更有效率的很好的平常体验。固然,实际上你能节约多少时间仍是值得商榷的…

粗略计算

咱们来粗略计算一下配置了 git 别名实际能节约多少时间。我大概能够一分钟输入 135 个单词,咱们假设每一个单词有 4 个字母,那么就是每秒能够输入

\frac{135 * 4}{60} = \boxed{9}

个字母。

下面这个表格展现了我最经常使用的简写能够节省的字母数:

原始命令 简写命令 可节省的字母数
git status g s 7
git diff g d 5
git checkout g co 8
git branch g br 6
git log -1 HEAD g last 9
git commit --amend --no-edit g cane 20

接下来,我使用 history 命令查看了我最近的 500 条命令。这是数据分析:

命令 使用数量
g s 155
g d 47
g co 19
g br 26
g last 11
g cane 2
其余 Git 命令 94
非 Git 命令 146

每一个“其余 Git 命令”能节省 2 个字母(由于我将 git 简写为 g),因此总的节省字母是:

命令 使用次数 可节省的字母数 总共节省的字母数
g s 155 7 1085
g d 47 5 235
g co 19 8 152
g br 26 6 156
g last 11 9 99
g cane 2 20 40
其余 Git 命令 94 2 188
1085 + 235 + \ldots + 40 + 188 = \boxed{1955}

因此一共节省了 1955 个字母,平均每一个 Git 命令节省了 \frac{1955}{354} = \boxed{5.5} 个字母。假设我工做日的八小时内输入大约 100 条 Git 命令,也就是能够节约 550 个字母,换算也就是天天能够节约一分钟(使用我前文提到的每秒输入 9 个字母的数据)。

好吧,因此实际上并无节省多少时间。 😢

可是我要重申:配置别名能让你以为提升了效率,这可能会给你一些内心暗示的做用,让你真的变得更加高效了。

你怎么看?你会去使用 Git 别名吗?为何去用或者为何不用?你还有什么其余喜欢用的别名?欢迎在评论区写下讨论!

更新:在 lobste.rs 的博客原文下面的评论区中有一些不错的讨论。推荐你阅读。

结语

当我写这篇博客的时候,我意识到还有三个经常使用的 Git 命令,但却被我忽略了:

$ git add .
$ git commit -m 'message'
$ git reset --hard
复制代码

我将会把它们也加入到个人 Git 别名配置中!

git aliases
git config --global alias.a "add ."
git config --global alias.cm "commit -m"
git config --global alias.rh "reset --hard"
复制代码

若是发现译文存在错误或其余须要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可得到相应奖励积分。文章开头的 本文永久连接 即为本文在 GitHub 上的 MarkDown 连接。


掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 AndroidiOS前端后端区块链产品设计人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划官方微博知乎专栏

相关文章
相关标签/搜索