代码之家  ›  专栏  ›  技术社区  ›  aberrant80

为什么我的“Git分支”没有主?

git
  •  79
  • aberrant80  · 技术社区  · 15 年前

    我是个新手,我一直在读关于“大师”分支的文章。“大师”是人们使用的一个传统名称,还是它有特殊的含义,比如 HEAD ?

    当我这样做的时候 git branch 在我的克隆上,我只看到一个分支——我所在的分支。根本没有“主人”。如果我打字 git checkout master (正如我在很多教程或指南中看到的那样),我

    error: pathspec 'master' did not match any file(s) known to git.
    

    我只是不明白为什么我的克隆人没有 master 每个人似乎都暗示它总是存在的。

    8 回复  |  直到 9 年前
        1
  •  64
  •   Amber    15 年前

    大多数Git存储库使用 master 作为主(和默认)分支-如果通过 git init 它将拥有 主人 默认情况下已签出。

    但是,如果克隆一个存储库,那么您拥有的默认分支是远程存储库的 HEAD 指向( 实际上是 符号参考函数 指向一个分支名称)。因此,如果您克隆的存储库 指,比如说, foo ,那么您的克隆将有一个 分支机构。

    从中克隆的远程计算机可能仍有一个 主人 分支(你可以查一下 git ls-remote origin master ,但默认情况下,您不会创建该分支的本地版本,因为 git clone 只检查遥控器 .

        2
  •  79
  •   robstarbuck    10 年前

    要签出不在本地但在远程报告中的分支,可以使用以下命令:

    git checkout -t -b master origin/master
    
        3
  •  37
  •   Matt Curtis    15 年前

    master 只是一个分支的名称,除了在创建新存储库时默认创建的名称外,它没有任何魔力。

    你可以加回去 git checkout -b master .

        4
  •  21
  •   eacousineau    13 年前

    实际上,对于一个全新的存储库,我也遇到了同样的问题。我甚至尝试用 git checkout -b master 但它不会创建分支。然后我意识到如果我做了一些更改并提交它们,git就创建了我的主分支。

        5
  •  13
  •   antoniob    12 年前

    在我的案例中 发展 分支但没有 主人 分支机构。因此,我克隆了将新创建的头指向现有分支的存储库。然后我创造了失踪者 主人 分支并更新head以指向新的主分支。

    git clone git:repositoryname --branch otherbranch
    git checkout -b master
    git update-ref HEAD master
    git push --set-upstream origin master
    
        6
  •  11
  •   digit    13 年前

    如果是您克隆的新回购,它可能仍然是空的,在这种情况下:

    git push -u origin master

    应该会解决的。

    (在我的情况下。不确定这是同一个问题,我想我应该发表这个只是为了以防万一。可能会帮助其他人。)

        7
  •  7
  •   Nick ONeill    10 年前

    我遇到了同样的问题并解决了问题。初始化存储库时,实际上没有任何分支。启动项目运行时 git add . 然后 git commit 将创建主分支。

    如果不检查任何内容,就没有主分支。在这种情况下,您需要遵循其他人建议的步骤。

        8
  •  0
  •   Zelphir Kaltstahl    9 年前

    似乎在主分支上必须至少有一个本地提交才能执行:

    git push -u origin master
    

    如果你这样做了 git init . 然后 git remote add origin ... ,您仍然需要执行以下操作:

    git add ...
    git commit -m "..."