【问题标题】:git: rename local branch failedgit:重命名本地分支失败
【发布时间】:2013-08-25 08:00:36
【问题描述】:

我不知道为什么我重命名本地分支的尝试失败了。我基本上克隆了项目,然后我在项目中也有一个子模块,我也下载了子模块代码。但是,当我在子模块中使用 git branch 时,我有:

* (no branch)
  master

代码看起来像是在另一个分支上,但输出显示它没有名称。然后我在网上搜索了如何重命名本地分支,我得到了这个:

git branch -m <newname>

在我运行这个命令后,git给了我这个错误:

error: refname refs/heads/HEAD not found
fatal: Branch rename failed

有人知道为什么会这样吗?谢谢。

【问题讨论】:

    标签: git branch rename


    【解决方案1】:

    我也遇到过这个问题。原因是我在这个 git 存储库上没有任何提交。

    当我运行命令git branch -M main 时。我收到以下错误消息。

    error: refname refs/heads/master not found
    fatal: Branch rename failed
    

    通过以下命令添加我的第一个提交后,一切正常。

    git add .
    git commit -m 'Init'
    

    【讨论】:

    • 这就是我正在寻找的解释。上下文含糊不清,所以我对有其他答案并不感到惊讶,但做得很好,谢谢!
    • Github 应该考虑将该部分添加到他们的指南中
    • 是的,这是罪魁祸首!
    【解决方案2】:

    首先使用以下方式设置您的电子邮件和用户名配置:

    git config --global user.email “you@example.com”
    git config --global user.name “Your Name”
    

    然后添加你的文件:

    git add .
    

    然后进行第一次提交:

    git commit -m "Initial commit"
    

    现在运行命令:

    git branch -M main
    

    这种方式对我有用。

    【讨论】:

      【解决方案3】:

      我认为这是“git init”创建 ma​​ster 分支和 github 的(新)“main”的冲突。

      之后:

      git add .
      git commit -m "first commit" 
      

      我可以git branch -M main

      【讨论】:

        【解决方案4】:

        我也遇到了这个错误,但我修复了它: git commit -m"your commit" 前 : git branch -M main 它工作正常

        【讨论】:

          【解决方案5】:

          您甚至可以在提交之前在本地通过几个步骤将名称从 master 更改为 main

          1. 导航到您的项目所在的目录。
          2. 在其中显示隐藏文件,因为默认情况下,.git 将被隐藏。
          3. .git 内部有一个文件HEAD,在文本编辑器中打开它。 你会看到,ref: refs/heads/master
          4. 够简单,把master改成main

          我们刚刚将 master 分支重命名为 main。只需从终端输入 git branch 即可验证这一点。

          【讨论】:

          • 这正是我想要的,谢谢!
          【解决方案6】:

          我的猜测是您不在名为“(无分支)”的分支上,而是不在分支上。

          如果你是第一个结帐大师:

          git checkout master
          

          然后新建一个分支:

          git checkout -b new_branch
          

          这会让它看起来像你所期望的那样。

          【讨论】:

            【解决方案7】:

            您目前处于分离的头部状态。您必须签出一个新分支以将其与当前提交相关联:

            git checkout -b new_branch
            

            【讨论】:

            • 你是对的!我认为 git 无法识别与一个分支同名的分支,并且您的命令正在创建一个新分支,但事实证明它有效。谢谢。
            • 这个解决方案也适用于我认为不相关的情况。我创建了一个新的 git repo 并且没有任何提交尝试重命名主分支并得到相同的错误消息。使用git checkout -b newbranch 有效地重命名了主分支。我猜这意味着在您在新存储库中进行第一次提交之前,您处于分离的头部状态
            • @frederickjh:不,在创建新存储库时,默认情况下您在 master 分支上。如果还没有提交,则可能无法重命名主分支。
            • @knittl,确实,当您创建新存储库时,您位于主分支上。那正是我的情况。如果没有提交,则没有指向 refs/heads/HEAD 的引用,这就是为什么在尝试重命名分支时会显示错误消息的原因。那么它是一个分离的头部状态吗?看到可能没有指向 HEAD 的指针,但是我将把它留给这里的 git 专家来解决!双关语。
            • 如果你刚刚创建了一个 repo 并且想要推送你的代码,请使用基本命令 -> git init -> git add remote .. -> git commit -m "first commit" -> git push -u 原产地主
            猜你喜欢
            • 2011-09-29
            • 2021-01-20
            • 2015-08-15
            相关资源
            最近更新 更多