如何创建自定义 git/bash 脚本?

nic*_*sse 3 git awk git-bash

我想让它git recent在我的终端中输入时,它实际上会运行: git reflog | egrep -io "moving from ([^[:space:]]+)" | awk '{ print $3 }' | awk ' !x[$0]++' | egrep -v '^[a-f0-9]{40}$' | head -n5 给我我签出的 5 个最新的 git 分支。

加分点:我想添加一个参数,这样如果我输入git recent 20它就会运行:git reflog | egrep -io "moving from ([^[:space:]]+)" | awk '{ print $3 }' | awk ' !x[$0]++' | egrep -v '^[a-f0-9]{40}$' | head -n20 给我最近签出的 20 个 git 分支。

另外,是否有任何推荐的阅读/教程系列可以更好地理解该脚本的工作原理以及如何编写自定义 bash 脚本?谢谢。

LeG*_*GEC 8

如果您创建一个可从您的路径访问的脚本,并将其命名为 : git-foo,则:

git foo arg1 arg2 ...
Run Code Online (Sandbox Code Playgroud)

将使用参数调用该脚本。

如果将别名的命令放在一行中git变得过于复杂,这是建议的方法。

  • 主手册页中提到:“支持的组有:builtins、parseopt(使用解析选项的内置命令)、main(libexec 目录中的所有命令)、其他(** $PATH 中具有 git- 的所有其他命令)字首**)” (2认同)
  • 我能想到的最好的办法是 BenjaminW. 隐藏在“man git”中的提及。还有一组标准的 git 命令,它们实际上是作为 `git-something` 脚本实现的:在 linux 下,查看 `/usr/lib/git-core/` 的内容。目前(git v2.33),诸如“git submodule”或“git bisect”之类的命令是外部脚本。有趣的事实:您还可以看到许多指向“git”本身的符号链接,这些命令曾经作为脚本实现,并且已集成到核心“git”二进制文件中。 (2认同)