在 git 中出现“严重:分支 'master' 不存在”
got 'fatal: branch 'master' does not exist' in git
用了一段时间git
,很强大也很漂亮..
但也对此有些困惑:
在我初始化 git 存储库后,它应该在 branch master 下,不是吗?
但是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
在你运行git init
之后,你看到的master
还没有完全创建。它不存在,因为它还没有指向任何提交。我曾经读到它是设计的。但我认为这是一个令人费解的错误。如果你 运行 git branch
,它 returns 没什么。
在您 运行 git fetch
之后,下面的 git checkout master
会完成这项工作。相当于:
git branch master origin/master
git checkout master
git branch -u origin/master
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
也将创建一个新分支 master
跟踪远程跟踪分支 origin/master
.
1请注意,您保留了当前索引/暂存区内容。对于新的空存储库也是如此,但是由于它是一个新的空存储库,索引/暂存区也是空的,"retaining the empty set" 感觉不太像保留。
用了一段时间git
,很强大也很漂亮..
但也对此有些困惑:
在我初始化 git 存储库后,它应该在 branch master 下,不是吗?
但是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
在你运行git init
之后,你看到的master
还没有完全创建。它不存在,因为它还没有指向任何提交。我曾经读到它是设计的。但我认为这是一个令人费解的错误。如果你 运行 git branch
,它 returns 没什么。
在您 运行 git fetch
之后,下面的 git checkout master
会完成这项工作。相当于:
git branch master origin/master
git checkout master
git branch -u origin/master
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
也将创建一个新分支 master
跟踪远程跟踪分支 origin/master
.
1请注意,您保留了当前索引/暂存区内容。对于新的空存储库也是如此,但是由于它是一个新的空存储库,索引/暂存区也是空的,"retaining the empty set" 感觉不太像保留。