【问题标题】:Why does my 'git branch' have no master?为什么我的“git 分支”没有主人?
【发布时间】:2021-06-11 06:12:36
【问题描述】:

我是一个 git 新手,我一直在阅读有关“主”分支的信息。 “大师”只是人们使用的传统名称还是像HEAD这样有特殊含义?

当我在我拥有的克隆上执行 git branch 时,我只看到 1 个单个分支 - 我所在的那个。根本没有“主人”。如果我输入git checkout master(正如我在很多教程或指南中看到的那样),我会得到

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

我只是对为什么我的克隆没有master 感到困惑,每个人似乎都暗示它总是存在。

【问题讨论】:

    标签: git


    【解决方案1】:

    大多数 Git 存储库使用 master 作为主要(和默认)分支 - 如果您通过 git init 初始化新的 Git 存储库,它将默认签出 master

    但是,如果您克隆存储库,则您拥有的默认分支是远程的 HEAD 指向的任何内容(HEAD 实际上是一个指向分支名称的符号引用)。因此,如果您克隆的存储库有一个 HEAD 指向,例如,foo,那么您的克隆将只有一个 foo 分支。

    您克隆的远程可能仍然有一个master 分支(您可以使用git ls-remote origin master 检查),但默认情况下您不会创建该分支的本地版本,因为git clone 只检查遥控器的HEAD

    【讨论】:

    • 如果存在的话,如何从原点检出master?
    • 如何将 HEAD 设置为 master
    • 我使用 git init 创建了我的 repo,但没有创建 master 分支。使用 Github 会自动创建分支,但使用 Bitbucket 不会。缺少的步骤是:git add .git commit -m "Test",然后是git push -u origin master
    • @Amber 我收到此错误“致命:主:不是有效的 SHA1”
    • @Amber git ls-remote origin master 没有显示任何内容。
    【解决方案2】:

    要检查本地不存在但位于远程仓库中的分支,您可以使用以下命令:

    git checkout -t -b master origin/master
    

    【讨论】:

    • 感谢您的帮助,尽管这个问题已经很老了。但你的答案不是我要问的。
    • fatal: Cannot update paths and switch to branch 'master' at the same time.
    • 修复在 github 创建主分支并设置为默认值
    【解决方案3】:

    master 只是一个分支的名称,它没有什么神奇之处,除了它是在创建新存储库时默认创建的。

    您可以使用git checkout -b master 将其添加回来。

    【讨论】:

    • git checkout -b master 只是为我从当前分支中添加了一个新分支。
    • @nnyby git checkout -b master 将从 HEAD 的任何内容创建一个 master 分支 - 因此,如果您在另一个分支上,它将创建一个 master 分支。除非您已经有一个 master 分支(您将拥有它,除非您已删除它或从未提交过它)。如果你已经有一个master 分支,这个命令只会给你一个错误。
    • 我的问题是:我怎么不小心把master删了?
    • @EricWalker master 只是一个分支,可以用git branch -d master 删除。虽然 git 会保护你不删除你当前所在的分支,但没有什么特别的保护 master 分支。更具体地说,很难说你是怎么做到的。或许你用你shell的history命令来看看?
    • 嗨@MattCurtis,您的回答目前具有误导性。 git checkout -b master 仅在 HEAD 设置为 origin/master 时有效。在任何其他情况下(例如您在“开发”上),git checkout -b master 将创建一个名为“master”的分支,该分支基于当前的 HEAD 位置(例如来自“开发”)。您还需要说明哪个分支将成为新分支的首选。 @Bunyk 在此线程上有正确答案:stackoverflow.com/a/21330943/287109
    【解决方案4】:

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

    【讨论】:

    • 误导部分是人们说我确实有主人,但无论我尝试做什么,我都会收到错误消息说我没有主人。 (当我的 repo 仍然为空时,我试图创建一个 dev 分支。)通过提交一些东西(任何文件),master 现在形成了,我可以继续做其他事情。我尝试了其他答案中的东西,但没有任何帮助。这里的这个答案可能适用于那里的许多人。 (我在 Git 中阅读了很多关于哈希的内容。我猜如果一开始什么都没有,那就没有什么可哈希的了。)
    【解决方案5】:

    在我的例子中,有一个 develop 分支,但没有 master 分支。因此,我克隆了将新创建的 HEAD 指向现有分支的存储库。然后我创建了缺少的 master 分支并更新 HEAD 以指向新的 master 分支。

    git clone git:repositoryname --branch otherbranch
    git checkout -b master
    git update-ref HEAD master
    git push --set-upstream origin master
    

    【讨论】:

    • 啊,我们走了……我没有主人或任何东西。首先,我添加了一个新文件和初始提交 - 然后这样做了。像魅力一样工作
    【解决方案6】:

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

    git push -u origin master

    应该可以解决。

    (在我的情况下。不确定这是同一个问题,我认为我应该发布这个以防万一。可能对其他人有所帮助。)

    【讨论】:

      【解决方案7】:

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

      如果不检查任何内容,您就没有 master 分支。在这种情况下,您需要按照此处其他人建议的步骤进行操作。

      【讨论】:

      • 真的。执行“git init”,然后执行“git checkout -b somebranchname”,您将没有主分支
      • 如果文件夹为空,这也可能不够。因此,要使其正常工作,您应该添加一些文件。这另一种尴尬实际上令人失望。
      【解决方案8】:

      似乎在 master 分支上必须至少有一个本地提交:

      git push -u origin master
      

      所以如果你先git init . 然后git remote add origin ...,你仍然需要这样做:

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

      【讨论】:

        【解决方案9】:

        如果您从 Github Web GUI 创建一个新的存储库,您有时会得到名称“main”而不是“master”。通过从终端使用命令git status,您将看到您所在的位置。在某些情况下,您会看到origin/main

        如果您尝试通过 CLI 将应用推送到云服务,请使用“main”,而不是“master”。

        示例: git push heroku main

        【讨论】:

          【解决方案10】:

          我遇到了同样的问题。我执行了“git init”,但没有创建主/主分支。可能是因为我使用了另一个名称的分支,而这个分支成为了默认名称。 对我有用的解决方案是:

          1. 我创建了“main”分支

          git checkout -b main
          1. 我转到了我的目录的选项Settings->Branches,并将其更改为新的分支“main”

          2. 通过此更改,Github 本身通知我我的默认分支(主)在我的另一个分支之后,并打开窗口让我确认 PR 将更改应用到主分支。然后,合并拉取请求。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-09-11
            • 2020-02-05
            • 2022-01-09
            • 2021-04-16
            • 1970-01-01
            • 2014-11-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多