Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 关于切换回空主分支的消息?_Git_Github_Version Control - Fatal编程技术网

Git 关于切换回空主分支的消息?

Git 关于切换回空主分支的消息?,git,github,version-control,Git,Github,Version Control,我的git版本是git-1.9.4-preview20140611 前面,我克隆了一个空的git源存储库。存储库已克隆,但出现以下消息 警告:您似乎克隆了一个空存储库。 正在检查连接。。。完成了 接下来,复制另一个项目的主Git存储库中的.gitIgnore文件,并将其提交给本地主Git存储库。这个文件以前已经被我们使用过很多次了。这看起来不错。 我们所有的项目都有一个标准化的.gitIgnore文件。这是作为最佳实践的一部分创建的 接下来创建了一个新分支,并在本地git repo所在的物理位置

我的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”作为未出生或已终止的分支的占位符,但目前它没有,因此如果您在未出生的分支上切换,它就会消失。)我也有同样的问题。。。简单的“推”并不能解决问题,失败了,大概是因为你解释的同一个原因。很好的解释。优雅而简单的解释