Git 关于切换回空主分支的消息?
我的git版本是git-1.9.4-preview20140611 前面,我克隆了一个空的git源存储库。存储库已克隆,但出现以下消息 警告:您似乎克隆了一个空存储库。 正在检查连接。。。完成了 接下来,复制另一个项目的主Git存储库中的.gitIgnore文件,并将其提交给本地主Git存储库。这个文件以前已经被我们使用过很多次了。这看起来不错。 我们所有的项目都有一个标准化的.gitIgnore文件。这是作为最佳实践的一部分创建的 接下来创建了一个新分支,并在本地git repo所在的物理位置复制了一些代码Git 关于切换回空主分支的消息?,git,github,version-control,Git,Github,Version Control,我的git版本是git-1.9.4-preview20140611 前面,我克隆了一个空的git源存储库。存储库已克隆,但出现以下消息 警告:您似乎克隆了一个空存储库。 正在检查连接。。。完成了 接下来,复制另一个项目的主Git存储库中的.gitIgnore文件,并将其提交给本地主Git存储库。这个文件以前已经被我们使用过很多次了。这看起来不错。 我们所有的项目都有一个标准化的.gitIgnore文件。这是作为最佳实践的一部分创建的 接下来创建了一个新分支,并在本地git repo所在的物理位置
git checkout -b FromCC
已添加代码并在此分支中提交
git add --all
git commit -M "Blah"
所有这些行动都是成功的
我的目的是将这些更改最终合并到本地主分支中
下一步我会的
git checkout master
并获得以下消息
您的分支基于“源/主”,但上游已经消失。(使用“git分支-未设置上游”进行修正)
这个信息是什么意思?
为什么上游会“消失”
有趣的观察:
今天,我在同一个主Git存储库中重复了相同的过程。这次Git存储库不是空的。它手头有一个.git文件。这一次前面提到的消息没有出现。缺少的不是上游存储库(源代码本身),而是您克隆的特定分支(源代码上的master
)
此外,git的信息是误导性的:origin上的分支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
然而,在这种情况下,当还没有原点/主节点时,您就有了本地分支主节点
跟踪原点/主节点
。一旦创建了它(通过使存储库非空的推送),问题就会消失。出现这种情况的唯一原因是,默认情况下,即使遥控器是空的,并且实际上还没有主控器,也可以从主控器开始。我在github上创建了一个完全空的repo,并将git clone
d复制到local后遇到了这种情况。包括关于空回购的警告。然后,一个新创建的本地文件的commit
给出了关于“上游已消失”的消息
要解决此问题并在这种情况下使用远程上游回购,请执行以下操作:
git-push-u原始主机
- 这会将本地现有主机传输到远程github repo
- push的-u开关将上游(长版本为--set upstream)设置为github上的set
消息消失了,因为主分支现在也可以在远程repo上使用。我在github上收到了相同的错误消息。
实际的问题是我没有批准对存储库的邀请。所以git认为我没有回购的权利。@DolphinJava:正确。空存储库(没有对象)没有分支实际上,根本没有最终引用,因为除了间接引用以外的所有引用都必须包含SHA-1。通常有一个间接引用,HEAD
,包含分支名称;这就是你如何在一个尚未诞生的分支上。(在将来的某个时候,可能会改变这一点:git可以使用全零的“NULL SHA-1”作为未出生或已终止的分支的占位符,但目前它没有,因此如果您在未出生的分支上切换,它就会消失。)我也有同样的问题。。。简单的“推”并不能解决问题,失败了,大概是因为你解释的同一个原因。很好的解释。优雅而简单的解释