在 zsh 别名中引用环境变量

reference environment variable in zsh alias

我使用别名来节省 git 命令的时间,其中之一是“git push origin master”。问题是,我的一些回购协议现在使用“main”。

创建在某些目录中表示“git push origin main”而在其他目录中表示“git push origin master”的 zsh 别名的正确方法是什么?

有几种方法可以解决这个问题。如果你的目标是推送 current 分支,你可以只写 HEAD: git push origin HEAD.

如果你想推送 default 分支,这有点棘手,因为 Git 本质上没有默认分支的想法。如果你想使用远程的当前分支,GitHub 上的默认分支,你可以这样写:

$ git push origin $(git rev-parse --abbrev-ref origin/HEAD | cut -d/ -f2)

请注意,您可能需要 运行 git remote set-head -a origin 一次以设置 origin/HEAD,如果远程分支名称更改,您将需要 运行 它,但是这是自动选择正确分支的最简单方法(诚然,这并不容易)。