上传消息切换回空主分支?

Dol*_*ava 12 git version-control github

我的git版本是Git-1.9.4-preview20140611早些时候,我克隆了一个空的git源存储库.克隆了存储库,但有以下消息

警告:您似乎克隆了一个空存储库.检查连接...完成.

接下来,复制一个.gitIgnore文件,该文件位于另一个项目的主Git存储库中,并将其提交给本地主服务器.此文件之前已被我们使用过很多次.这似乎很好.我们为所有项目提供了标准化的.gitIgnore文件.这是最佳实践的一部分.

接下来创建了一个新分支,并在本地git repo所在的物理位置复制了一些代码

git checkout -b FromCC
Run Code Online (Sandbox Code Playgroud)

添加了代码并在此分支中提交.

git add --all
git commit -M "Blah"
Run Code Online (Sandbox Code Playgroud)

所有这些操作都是成功的.

我的目的是将这些更改最终合并到本地主分支中.

我接下来呢

git checkout master
Run Code Online (Sandbox Code Playgroud)

并得到以下消息.

您的分支基于'origin/master',但上游已经消失.(使用"git branch --unset-upstream"来修复)

这条消息是什么意思?为什么上游会"消失"?

有趣的观察:我今天使用相同的主Git存储库重复了相同的过程.这次Git存储库不是空的.它之前有.gitIgnore文件.这次前面提到的消息没有出现.

tor*_*rek 37

它不是上游存储库(origin本身),而是您克隆的(master在原点上)缺少的特定分支.

此外,git的消息具有误导性:master原点上的分支并没有消失,它从未出现过.克隆空存储库时,它根本没有分支.它继续没有分支机构.因此,您master设置为跟踪的本地origin/master是跟踪一个确实存在(确实)不存在的分支.

该消息更适用于以下情况:

$ git clone ...
$ git checkout featureX   # track some feature branch
[go away for a week, come back]
$ git fetch -p            # update remote branches
Run Code Online (Sandbox Code Playgroud)

在那个星期你离开的地方,featureX分支被删除了(大概是合并到它的开发线上,然后不再需要).此时,您正在本地分支上,featureX设置为跟踪远程分支origin/featureX,但现在已经没有origin/featureX了.

在这种情况下,虽然,你有地方分支master跟踪origin/master时,有没有origin/master .一旦你创建它(通过使存储库非空的推送),问题就会消失.这种情况的出现只是因为默认情况下,master即使遥控器是空的并且实际上还master没有遥控器,你也会开始.