如何从命令行获取主要的git分支名称?

时间:2019-03-20 17:31:25

标签: git terminal command

如何从命令行/终端获取主分支名称?

我知道主分支在默认情况下称为master,但是可以将其重命名为他们想要的任何名称。

PS-最好获得本地远程主分支的名称。

编辑:我所说的main branch可能称为default branchstable branch。这是您(应该)将所有内容(稳定/工作)合并到其中的一种。

4 个答案:

答案 0 :(得分:1)

您可能想使用此命令string str1 = "First string"; string str2 ("Second string"); string str3 {"Third string"}; ,如果您想同时使用git branch -r,则-r仅用于列出远程分支。 通常,主分支指向-a之类的origin/HEAD

答案 1 :(得分:1)

你也可以这样使用:

alias gc-m='git checkout `git branch -rl "*/HEAD" | rev | cut -d/ -f1 | rev`'

答案 2 :(得分:0)

我对git并不了解,但是在git中通常有{remote}/HEAD,例如origin/HEAD。以下是man page of git remote的摘录:

 set-head

    Sets or deletes the default branch (i.e. the target of the
    symbolic-ref refs/remotes/<name>/HEAD) for the named remote.
    Having a default branch for a remote is not required, but allows
    the name of the remote to be specified in lieu of a specific
    branch. For example, if the default branch for origin is set to
    master, then origin may be specified wherever you would normally
    specify origin/master.

据此我了解到{remote}/HEAD{remote}的主要/默认分支。可以使用此名称获取分支的名称(有人知道更好的/管道命令吗?):

# With "remotes/"
git branch -r | grep -Po "HEAD -> \K.*$"
remotes/origin/master

# Without "remotes/"
git branch -r | grep -Po "HEAD -> remotes/\K.*$"
origin/master

当要获取本地main / default分支时,通常没有HEAD分支,但是通常只有一个分支跟踪{remote}/HEAD,我们可以使用该名称(再次,肯定有更好的命令):

git branch -vv | grep -Po "[ *gb]*\K[^ ]*(?=[ ][ 0-9a-f]* \[$(git branch -r | grep -Po "HEAD -> \K.*$"))"
master

答案 3 :(得分:0)

如果您假设主分支将被称为 mastermain,那么我将执行以下操作来快速检测本地存储库中的主分支名称:

git_main_branch () {
    git branch | cut -c 3- | grep -E '^master$|^main$'
}

然后我需要知道主分支名称的其他命令可以使用它。例如我有 gc-m 代表“git checkout main branch”:

alias gc='git checkout '
alias gc-m='gc $(git_main_branch)'