厉害的Git别名

113 阅读4分钟

Git是一个神奇的强大工具。它可以跟踪你写的所有代码,让你把工作组织成不同的分支,帮助你与其他开发者无缝协作,甚至让你进行时间旅行和修改。

但如果Git能做得更多,那不是很好吗?如果你能用自己的命令来定制它,让它做任何你能想象到的事情,那会怎么样?

在这个由三部分组成的系列中,我将向你展示如何做到这一点。你将学会如何创建自定义的Git别名,用来运行任何你想用的命令。我还会向你展示许多有用的命令,你可以将其添加到Git中,使其变得更加有用。

如何使用命令的别名

在我们继续讨论之前,*什么是别名?*别名是运行另一条 Git 命令的快捷方式。你可以像设置其他配置值一样设置别名。

例如,假设你经常把git status 错打成git stats ,而你希望git stats 也能运行同样的命令。你可以这样做,将alias.stats 设置为status

git config --global alias.stats status

轰!"。就这样,你已经创建了一个别名。

就像其他配置值一样,你也可以打开你的~/.gitconfig 文件并在那里添加别名。这与上述命令的作用相同:

[alias]
  stats = status

快捷方式

你可能每天都在使用 Git。像git status,git addgit commit 这样的命令非常棒。

但是,唉。所有的打字。谁有时间去做呢?

你可以为 Git 设置一些最有用的别名,这些别名是常用命令的一到两个字符的快捷方式:

[alias]
  a = add
  b = branch
  c = commit
  cl = clone
  co = checkout
  cp = cherry-pick
  m = merge
  p = push --follow-tags
  pu = pull
  r = reset
  s = status 

这些别名可以大大节省时间。不需要输入git status ,只需要输入git s 。不需要输入git add . ,只需要输入git a . 。这听起来可能很微不足道,但试一试,我保证你不会再去输入完整的单词。

强制推送

有时,你需要把修改推送到远程版本库并覆盖文件。你可能已经习惯了用git push --force

但如果别人已经把修改推送到同一分支,会发生什么?你的命令会抹去他们的提交。这就不好了

Git 有一个更安全的方法来推送修改并覆盖你的提交。你可以使用--force 标志,而不是使用--force-with-lease 。这个标志可以防止你不小心覆盖了别人的提交。这种工作方式有点神奇,但你可以相信它的作用。

你可以为此写一个force-push 的别名:

git config --global alias.force-push "push --force-with-lease"

现在你可以运行git force-push ,这样就比较好记了。当然,为了节省一些击键,你也可以为这个别名添加一个简短的版本:

git config --global alias.fp force-push

请注意,你只能在Git 2.20+中使用别名。

外壳别名

在Git别名中,还有一个强大的附加功能可以使用:shell别名。如果你在别名的值前面加上一个! ,就可以运行任何shell命令。例如,你可以添加以下别名,在每次输入git hello 时,打印出hello

git config --global alias.hello "!echo hello"

爸爸

你知道他们,你喜欢他们--爸爸的笑话。当你不小心把git add 错打成git dad 时,Git 就会用一个爸爸的笑话来回应。

*注意:这个主意不是我想出来的。我可以找到的最早的参考资料是Reddit上的一个帖子

git config --global alias.dad '!curl https://icanhazdadjoke.com/ && echo'

现在为什么你不小心输入了git dad ,你会得到这样的一个宝石。

这个机器人为什么生气?因为有人一直在按他的按钮!

经典。

这就是现在的全部

这就是坚持把这篇文章写完的原因!希望你已经学会了如何设置你自己的别名,而且你发现我包括的一些别名很有用。

在本系列的下一部分,我们将更深入地探讨如何建立自定义的 Git 命令,以加快你的工作流程。在那之前,祝你玩得开心!