得到了致命:分支'主人'不存在'在git

时间:2017-10-24 16:13:22

标签: git git-branch

使用git一段时间,它非常强大和美丽..

但也对此感到困惑:

在我创建一个git repo之后它应该在分支主人之下,不是吗?

但是git branch -a,我什么也没有人 当我尝试为我的分支设置上游时,我得到了fatal: branch 'master' does not exist

users@debian MINGW64 ~/Desktop/taste
$ git init
Initialized empty Git repository in C:/Users/users/Desktop/taste/.git/

users@debian MINGW64 ~/Desktop/taste (master)
$ git remote add origin git@gitee.com:greedev/Test.git

users@debian MINGW64 ~/Desktop/taste (master)
$ git branch -u origin/master
fatal: branch 'master' does not exist

users@debian MINGW64 ~/Desktop/taste (master)
$ git branch -a

users@debian MINGW64 ~/Desktop/taste (master)
$ git fetch
The authenticity of host 'gitee.com (120.55.226.24)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitee.com,120.55.226.24' (ECDSA) to the list of know                n hosts.
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 7 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (7/7), done.
From gitee.com:greedev/Test
* [new branch]      master     -> origin/master

users@debian MINGW64 ~/Desktop/taste (master)
$ git branch -a
  remotes/origin/master

users@debian MINGW64 ~/Desktop/taste (master)
$ git branch -u origin/master
fatal: branch 'master' does not exist

enter image description here

3 个答案:

答案 0 :(得分:26)

TL; DR

此时你可以git checkout master

更长的描述(但仍然不长)

你这样做很难。

将来,而不是:

mkdir repo
cd repo
git init
git remote add origin <url>
git fetch origin
git checkout master

你可以简单地运行:

git clone <url> repo

因为上面的六个命令几乎是git clone所做的。

在前三个步骤之后 - 创建一个新的,完全空的存储库 - 你有一个处于特殊状态的存储库:它没有提交,所以它没有分支。同时, 具有当前分支,即master

换句话说,当前分支是不存在的分支

这种状态很不寻常,但很正常。如果运行git checkout --orphan newbranch,则将Git存储库置于不存在的分支上的相同状态: 1 。一旦存在要在分支名称下存储的提交哈希,就会创建分支。

每当您运行git checkout <name>且没有名为<name>的分支时,Git会检查是否只有一个远程跟踪分支,例如origin/<name> 。如果是这样,Git会创建一个名为<name> new 分支,该分支指向与origin/<name>相同的提交,并且origin/<name>作为其上游。

由于最后一步 - git checkout master master尚未实际存在 - 是git clone的最后一步,git clone也会创建一个新的分支{{1 }跟踪远程跟踪分支master

1 请注意,您保留当前索引/暂存区域内容。对于新的空存储库也是如此,但由于它是一个新的空存储库,索引/暂存区域也是空的,“保留空集”并不像保留那样。

答案 1 :(得分:2)

运行git init后,您看到的master未完全创建。它没有存在,因为它还没有指向任何提交。我曾经读过它的设计。但我认为这是一个令人费解的错误。如果您运行git branch,则不返回任何内容。

运行git fetch后,以下git checkout master执行此任务。它相当于:

git branch master origin/master
git checkout master
git branch -u origin/master

答案 2 :(得分:0)

您可能正在寻找git checkout master以及一些教程。