为什么它总是一个分离的 HEAD?
Why is it always a detached HEAD?
我有一个带有两个遥控器的 git 仓库。
origin/master cm/master
| |
| |
sfcc--------------cm/sfcc-18
|
|
feature
以上是我的repo的基本结构。分支 sfcc 是从 cm.
的另一个分支 sfcc 中拉出的
分支 sfcc 和 feature 也被推送到远程源。
分支 sfcc 尚未合并到 origin/master。
现在我在使用本地分支功能。除了创建这些分支之外,我还没有做任何更改。我尝试切换到 origin/sfcc,这让我处于分离状态。
HEAD is now at 9d4f1707 Merge branch 'sfcc-18' of https://github.com/bla-bla-cm into sfcc.
当我再次尝试结帐时 origin/migration 我收到了同样的消息。
在 git status
我得到了工作树,没有什么可提交的。
为什么我什么都没有改变也会出现这种情况?
万一 cm/sfcc-18 上发生了某些变化,我不希望根据 cm 存储库变化对其进行跟踪。我已将 origin/sfcc 的上游跟踪设置为 origin/master。
我也无法结账 origin/master。我收到以下消息
Previous HEAD position was 9d4f1707 Merge branch 'sfcc-18' of https://github.com/bla-bla-cm into sfcc
HEAD is now at e71242f0 .gitignore created online with Bitbucket
您看到结帐导致头部分离的最可能原因是您将要结帐的分支引用为 origin/<branch-name>
而不是简单地 <branch-name>
.
虽然从技术上讲两者都会导致 HEAD 处于同一提交状态,但 Git 在这两种情况下的行为方式是不同的。
git checkout origin/<branch>
检出一个特定的提交作为分离的头,即使你有一个同名的本地分支,就好像你使用了 --detach
git checkout <branch>
将检查本地分支(如果存在)。如果没有,并且确实存在一个具有该名称的远程跟踪分支,它将创建一个具有该名称的本地分支并将其设置为跟踪远程分支。有关详细信息,请参阅 git checkout。
在你的情况下,你应该能够只键入 git checkout sfcc-18
,然后将签出一个新的本地分支来跟踪 cm/sfcc-18
。
但是请注意,如果您想将 origin 的 master 作为新的本地分支结帐,则需要 git checkout -b master --track origin/master
我有一个带有两个遥控器的 git 仓库。
origin/master cm/master
| |
| |
sfcc--------------cm/sfcc-18
|
|
feature
以上是我的repo的基本结构。分支 sfcc 是从 cm.
的另一个分支 sfcc 中拉出的分支 sfcc 和 feature 也被推送到远程源。
分支 sfcc 尚未合并到 origin/master。
现在我在使用本地分支功能。除了创建这些分支之外,我还没有做任何更改。我尝试切换到 origin/sfcc,这让我处于分离状态。
HEAD is now at 9d4f1707 Merge branch 'sfcc-18' of https://github.com/bla-bla-cm into sfcc.
当我再次尝试结帐时 origin/migration 我收到了同样的消息。
在 git status
我得到了工作树,没有什么可提交的。
为什么我什么都没有改变也会出现这种情况?
万一 cm/sfcc-18 上发生了某些变化,我不希望根据 cm 存储库变化对其进行跟踪。我已将 origin/sfcc 的上游跟踪设置为 origin/master。
我也无法结账 origin/master。我收到以下消息
Previous HEAD position was 9d4f1707 Merge branch 'sfcc-18' of https://github.com/bla-bla-cm into sfcc
HEAD is now at e71242f0 .gitignore created online with Bitbucket
您看到结帐导致头部分离的最可能原因是您将要结帐的分支引用为 origin/<branch-name>
而不是简单地 <branch-name>
.
虽然从技术上讲两者都会导致 HEAD 处于同一提交状态,但 Git 在这两种情况下的行为方式是不同的。
git checkout origin/<branch>
检出一个特定的提交作为分离的头,即使你有一个同名的本地分支,就好像你使用了 --detach
git checkout <branch>
将检查本地分支(如果存在)。如果没有,并且确实存在一个具有该名称的远程跟踪分支,它将创建一个具有该名称的本地分支并将其设置为跟踪远程分支。有关详细信息,请参阅 git checkout。
在你的情况下,你应该能够只键入 git checkout sfcc-18
,然后将签出一个新的本地分支来跟踪 cm/sfcc-18
。
但是请注意,如果您想将 origin 的 master 作为新的本地分支结帐,则需要 git checkout -b master --track origin/master