【问题标题】:Upstream gone message on switching back to an empty master branch?切换回空主分支时上游消失的消息?
【发布时间】:2019-08-30 02:50:29
【问题描述】:

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

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

接下来,复制另一个项目的主 Git 存储库中的 .gitIgnore 文件并将其提交到本地主存储库。这个文件之前我们已经用过很多次了。这似乎很好。 我们所有项目都有一个标准化的 .gitIgnore 文件。这是作为最佳实践的一部分创建的。

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

git checkout -b FromCC

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

git add --all
git commit -M "Blah"

所有这些操作都成功了。

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

我接下来做

git checkout master

并收到以下消息。

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

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

有趣的观察: 我今天对同一个主 Git 存储库重复了相同的过程。这次 Git 存储库不是空的。它事先有 .gitIgnore 文件。这次没有出现上述消息。

【问题讨论】:

    标签: git github version-control


    【解决方案1】:

    丢失的不是上游存储库origin 本身),而是您克隆的特定分支(源上的master)。

    此外,git 的信息具有误导性:origin 上的分支 master 并没有消失,它从来没有出现过。当您克隆空存储库时,它根本没有分支。它仍然没有分支机构。因此,设置为跟踪 origin/master 的本地 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

    不过,在这种情况下,当没有 origin/master 时,您有本地分支 master 跟踪 origin/master。一旦创建它(通过使存储库非空的推送),问题就会消失。这只是因为默认情况下您以master 开头,即使遥控器是空的并且实际上还没有master

    【讨论】:

    • @DolphinJava:正确。一个空的存储库(没有对象)没有分支——实际上,根本没有最终引用——因为除了间接引用之外的所有引用都必须包含 SHA-1。通常有一个间接引用,HEAD,它包含一个分支名称;这就是你可以在尚未诞生的分支上的方式。 (在未来的某个时候,可能会改变这一点:git 可以使用全零的“NULL SHA-1”作为未出生或已终止分支的占位符,但目前,它没有,所以如果你在一个未出生的分支上并离开它,它就会消失。)
    • 我有同样的问题......一个简单的“推送”并没有解决它,失败了,大概是因为你解释的同样的原因。
    • 很好的解释。
    • 优雅简洁的解释
    【解决方案2】:

    我在 github 上创建了一个完全空的 repo 并在本地创建了 git cloned 后遇到了这个问题。包括关于空回购的警告。然后一个新创建的本地文件的commit 给出了有关“上游已消失”的消息。

    在这种情况下修复它并使用远程上游仓库:

    git push -u origin master

    • 这会将本地现有的 master 转移到远程 github repo。
    • 用于推送的 -u 开关确实将上游(长版本为 --set-upstream)设置为 github 上的集合。

    消息消失了,因为主分支现在也可以在远程仓库中使用。

    【讨论】:

      【解决方案3】:

      我与 github 有相同的错误消息。 实际的问题是我没有批准对存储库的邀请。所以 git 认为我没有 repo 的权限。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-20
        • 2018-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多