【问题标题】:Switch to a remote branch getting detached head [duplicate]切换到远程分支得到分离头[重复]
【发布时间】:2016-02-09 20:51:08
【问题描述】:

这是我所有分支的列表:

$ git branch -a
* temp
  remotes/heroku/master
  remotes/origin/dev
  remotes/origin/master

当我输入 git checkout remotes/origin/master 切换到我的原点 master 分支时,Git 切换到分离的 HEAD 状态。为什么?

【问题讨论】:

    标签: git git-detached-head


    【解决方案1】:

    这是正确的行为,因为您检查了 remote 分支。

    如果您想查看 master 并对其进行处理,您现在应该这样做:

    # checkout remote branch as local branch
    # this will look up the branch name locally and if it does not find it it
    #will checkout your remote branch with this name.
    git checkout master
    

    当您签出远程分支时,您只是将您的 HEAD 指向该分支的最新提交。如果你想处理它,你必须在没有 remote/<branch> 的情况下将其作为本地分支签出。这将自动签出并使用给定名称创建本地分支。

    如果您想了解更多关于 HEAD 的信息,请阅读所有相关信息 here


    什么是分离的 HEAD?

    分离的 HEAD 意味着您的 HEAD 指向的提交不是提交链中的后期。

    在此示例中,提交 #4 是最新的,而 HEAD 指向提交 #2。

    【讨论】:

    • 嗨@codeWizard,谢谢你的回复,事实上,我有三个分支,一个用于heroku,2个(dev/master)用于我的repos服务器,我使用了一个临时分支(因为可以'不要切换到三个分支中的任何一个)在试图弄清楚从分离的头部退出之后,然后我将temp branch代码推送到所有分支,并且使用推送HEAD:masterHEAD:dev可以正常工作,现在我需要在运行分支 -a 时在 origin/dev 分支上工作(我有 remotes/origin/dev, remotes/origin/master, remotes/heroku/master),但即使在执行 git 之后也无法检查 origin master 分支获取原点。
    • 试试这个:git checkout dev; git branch -D master; git checkout master
    • 谢谢,这是结果,Switched to branch 'dev' Your branch is up-to-date with 'origin/dev'. error: branch 'master' not found. error: pathspec 'master' did not match any file(s) known to git.git branch -a * dev temp remotes/heroku/master remotes/origin/dev remotes/origin/master
    • 这会因为主名称(heroku 的分支主和起源的分支主)而发生吗?
    • 这个问题已经在网站上被问过无数次了。我知道easy rep'很难抗拒,但请在发布答案之前尝试查找重复项。
    猜你喜欢
    • 1970-01-01
    • 2023-01-13
    • 2016-02-24
    • 1970-01-01
    • 2010-10-03
    • 2020-06-11
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多