我的git版本是Git-1.9.4-preview20140611 早些时候,我克隆了一个空的git origin存储库。克隆了存储库,但有以下消息
警告:您似乎克隆了一个空存储库。 检查连接性......已完成。
接下来,复制了另一个项目的主Git存储库中的.gitIgnore文件,并将其提交给本地主服务器。此文件之前已被我们使用过很多次。这似乎很好。 我们为所有项目提供了标准化的.gitIgnore文件。这是最佳实践的一部分。
接下来创建了一个新分支,并在本地git repo所在的物理位置复制了一些代码
git checkout -b FromCC
添加了代码并在此分支中提交。
git add --all
git commit -M "Blah"
所有这些操作都是成功的。
我的目的是将这些更改最终合并到本地主分支。
我接下来要做
git checkout master
并获得以下信息。
您的分支机构基于&origin; /',但上游已经消失。 (使用" git branch --unset-upstream"来修复)
这条消息是什么意思? 为什么上游会消失?' ?
有趣的观察: 我今天使用相同的主Git存储库重复了相同的过程。这次Git存储库不是空的。它之前有.gitIgnore文件。这次没有出现前面提到的消息。
答案 0 :(得分:34)
它不是上游存储库(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
其中,在那个星期你离开的时候,featureX
分支被删除了(大概是合并到它的开发线上,然后不再需要)。此时,您位于本地分支featureX
,设置为跟踪远程分支origin/featureX
,但不再有origin/featureX
。
但是,在这种情况下,当没有master
时,您有本地分支origin/master
跟踪origin/master
。一旦你创建它(通过使存储库非空的推送),问题就会消失。这种情况只会因为默认情况下以master
开头,即使遥控器为空且实际上还没有master
。
答案 1 :(得分:3)
作为git / github的新手,我在github和git clone
d创建一个完全空的repo到本地之后遇到了这个。包括关于空回购的警告。然后,对新创建的本地文件的提交给出了关于"上游消失的消息"。
以下假设有人想使用远程仓库,因此需要设置上游:
我想补充一点,github在创建空仓库时建议了一些命令。关键的一个是git push -u origin master
(init
之后,add
(对于文件),commit
和remote add origin <url>
命令。这会将本地存在的主服务器传输到远程github存储库。
-u切换到push会将上游(长版本是--set-upstream)设置为github上的设置。 我不得不承认,那个开关的git-push联机帮助页的其余部分对我来说仍然是神秘的...因为本地不是最新的也没有成功推动。
消息已消失,因为现在主分支也可用于远程仓库。
答案 2 :(得分:0)
我和github有同样的错误信息。 实际问题是我没有批准对存储库的邀请。所以git认为我没有回购权。