我今天结束了一个分离的头,同样的问题描述:git推送说所有最新的,即使我有局部的变化

据我所知,我没有做任何不同寻常的事情,只是从本地回购中提交和推送。

那么,我是如何得到一个分离的头部的呢?


当前回答

我刚才无意中重复了这句话:

列出远程分支 Git branch -r /功能/ f1234起源 来源/主 我想在本地签出一个,所以我剪切粘贴: git checkout origin/Feature/f1234 您看!分离HEAD状态 你处于“分离的头部”状态。[…])


解决方案1:

不包括起源/在我的分支规格前检查时:

git checkout Feature/f1234

解决方案2:

添加-b参数,用于从远程创建本地分支

git checkout -b origin/Feature/f1234或

git checkout -b Feature/f1234它会自动回到原点

其他回答

进入git分离头状态的另一种方法是尝试提交到远程分支。喜欢的东西:

git fetch
git checkout origin/foo
vi bar
git commit -a -m 'changed bar'

请注意,如果您这样做,任何进一步尝试签出origin/foo将使您回到分离的头部状态!

解决方案是创建自己的本地foo分支来跟踪origin/foo,然后可选地push。

这可能与您最初的问题无关,但该页在“git分离头”的谷歌次点击中排名靠前,这个场景的文档记录严重不足。

在我的案例中,情况是这样的:

创建一个新的分支(feb_debugging)。 运行git fetch 我看到新的分支(feb_debugging)被拉 现在,我使用git checkout origin/feb_debugging

在这里它让我到HEAD现在在....

我只需要再结账一次

Git签出feb_debugging 现在git说我在feb_debugging分支。

如果您有一个与分支同名的标记,就会发生这种情况。

例如:如果“release/0.1”是标签名,那么

git checkout release/0.1

在“release/0.1”处产生分离的HEAD。如果您期望release/0.1是一个分支名称,那么您会感到困惑。

try

git reflog 

这给了你一个HEAD和分支指针的历史 哪里搬过去了。

例如:

88ea06b HEAD@{0}: checkout:从DEVELOPMENT移动到remotes/origin/SomeNiceFeature e47bf80 HEAD@{1}:拉动原点发展:快进

这个列表的顶部是一个原因,人们可能会遇到一个分离的头 状态……检查一个远程跟踪分支。

以下是VonC的评论,这是我如何解决这个“分离的头部”问题的简短版本。

在我的遥控器上创建了一个分支;来源/ dev /功能 在我的本地运行git fetch,所以现在我的本地将知道这个新的远程分支 现在运行git switch feature/dev,我们就完成了!