作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 Git 命令别名来从存储库中 check out 最新的标签:
~/.gitconfig
:
checkout-latest = !git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
所以我可以像这样在正确标记的存储库中使用它:
$ git checkout-latest
我有 checkout 命令的命令别名:
~/.gitconfig
:
co = checkout
checkout-latest
不适用于 checkout 的命令别名:
$ git co-latest
git: 'co-latest' is not a git command. See 'git --help'.
如何配置 Git 以便我可以将 latest 用作指向以编程方式确定的 latest 标签的标签别名?我想像这样使用它:
$ git checkout latest
和
$ git co latest
请注意,在我想要的变体中,子命令和标记之间没有破折号。
最佳答案
我能想到的解决这类事情的唯一方法是 git
基于参数进行"dispatch"的 shell 函数。
像这样:
git() {
if [ "$1" != checkout ] || [ "$#" -ne 2 ]; then
git "$@"
return
fi
local lastrev lasttag
case $2 in
:latest)
lastrev=$(git rev-list --tags --max-count=1)
set -- checkout "$(git describe --tags "$lastrev")"
;;
esac
git "$@"
}
标签别名需要像普通引用一样无效才能安全使用 check-ref-format
.
此构造允许通过 case 语句添加任意标记“别名”。
如果您想使用标签“别名”,这个函数在可以使用的参数方面非常受限。具体来说,你不能通过任何。命令必须是git checkout <alias>
.解析所有有效 git checkout
combinations 实在是太难了,现在不用操心了(尽管它可能会完成)。
关于git - 如何在 Git 中给标签起别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27532489/
我是一名优秀的程序员,十分优秀!