为什么它总是一个独立的HEAD?

时间:2018-03-27 09:02:38

标签: git github merge bitbucket git-detached-head

我有两个遥控器的git repo。

    origin/master        cm/master
         |                  |
         |                  |
       sfcc--------------cm/sfcc-18
         |
         |
       feature

以上是我的回购的基本结构。分支sfcc从cm的另一个分支sfcc中拉出。

分支sfcc和功能也被推送到远程原点。

分支sfcc尚未合并到origin / master。

现在我在本地分支功能上。除了创建这些分支之外,我还没有做过任何更改。我尝试切换到origin / sfcc,这使我处于分离状态。

  

HEAD现在位于https://github.com/bla-bla-cm的9d4f1707合并分支'sfcc-18'进入sfcc。

当我尝试检查原始/迁移时,我得到相同的消息。

git status上,我的工作树干净,无需提交。

即使没有任何改变,为什么我会陷入这种情况?

如果在cm / sfcc-18上发生了某些变化,我不希望跟踪cm repo更改。我已使用origin / master设置origin / sfcc的上游跟踪。

我也无法结帐原点/主人。我收到以下消息

  

以前的HEAD职位是9d4f1707将https://github.com/bla-bla-cm的分支'sfcc-18'合并为sfcc

     

HEAD现在位于e71242f0 .gitignore使用Bitbucket在线创建

1 个答案:

答案 0 :(得分:3)

您看到结帐的最可能原因是,您引用的是您要查看的分支<branch-name>,而不仅仅是git checkout origin/<branch>

虽然从技术上讲两者都会导致HEAD处于相同的提交状态,但Git在这两种情况下的行为方式是不同的。

git checkout <branch>将特定提交检出为分离头,即使您有一个具有相同名称的本地分支,就像您使用了--detach

一样

git checkout sfcc-18将检出本地分支(如果存在)。如果它没有,并且存在具有该名称的单个远程跟踪分支,则它将创建具有该名称的本地分支并将其设置为跟踪远程分支。有关详细信息,请参阅git checkout

在您的情况下,您应该只需输入cm/sfcc-18,就会检出一个新的本地分支,以跟踪git checkout -b master --track origin/master

但是请注意,如果您想将原始广告素材结帐为新的本地分支,则需要SELECT distinct v.KodQ, v.DodPeriodika, v.GodGP, v.Periodika as Period, k.Oblast, k.KratokNazivSI, k.NazivSI, k.Periodika, v.rKod, r.Naziv, v.rDatum, v.IT, v.Primerok, v.BrojIE, CONVERT(varchar, CONVERT(DATETIME, v.RefPeriodOd), 103) as RefPeriodOd, CONVERT(varchar, CONVERT(DATETIME, v.RefPeriodDo), 103) as RefPeriodDo FROM GP.dbo.MyTable1 AS v INNER JOIN GP.dbo.MyTable2 as k ON k.KodSI = v.KodQ AND k.DodObr = v.DodPeriodika INNER JOIN GP.dbo.MyTable3 AS r ON r.rKod = v.rKod WHERE v.GodGP = GodGP and CHARINDEX('-', RefPeriodDo, 0) != 0