接受主分支名称和主分支名称的 git 别名?

Non*_*eve 5 git git-config

我从事几个项目,其中一些具有main默认master分支。我无法用一个或其他名称重命名所有项目,因为并非所有项目都由我管理。我知道.gitconfig别名系统非常广泛,所以我想知道是否有一种方法可以接受涉及的每个命令的两个名称。到目前为止,我只找到了这个,但它涉及修改每个单独的命令,并且使用!sh -c它不是很“漂亮”。理想的情况是还测试两个分支是否确实存在于存储库中以避免错误。
我尝试master = main在 .gitconfig[alias]部分的开头添加,但无论哪种方式都不起作用。

IMS*_*SoP 4

要查找远程存储库的默认分支(无论名称如何),您可以查看..git/refs/remote/<remote name>/HEAD

例如:

$ cat .git/refs/remotes/origin/HEAD
ref: refs/remotes/origin/master
$ awk -F "/" '{print $NF}' .git/refs/remotes/origin/HEAD
master
Run Code Online (Sandbox Code Playgroud)

然后就可以切换到本地同名分支:

git switch $(awk -F "/" '{print $NF}' .git/refs/remotes/origin/HEAD)
Run Code Online (Sandbox Code Playgroud)

  • 基于 git 命令而不是 git 文件的版本(也可以在子目录中使用): `git rev-parse --abbrev-ref origin/HEAD` (取自 /sf/answers/4367795701/ ) (2认同)