git - 在 git 中得到 'fatal: branch ' master'不存在'

标签 git git-branch

用了一段时间git,很强大也很漂亮..

但也有一些困惑:

在我初始化一个 git repo 之后它应该在 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

enter image description here

最佳答案

长话短说

您可以 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 检查是否有 exactly one 远程跟踪分支,例如 origin/<name> .如果是这样,Git 会创建一个名为 <name> 分支。指向与 origin/<name> 相同的提交那有 origin/<name>作为其上游。

从最后一步开始——git checkout master什么时候master实际上还不存在——是git clone的最后一步, git clone还将创建一个新分支 master跟踪远程跟踪分支 origin/master .


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

关于git - 在 git 中得到 'fatal: branch ' master'不存在',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46915350/

相关文章:

git - NodeJS 和 Github : keeping data safe

git:分支名称前面的 "o"是什么意思?

git - "(no branch)"和 "(detached at abc1234)"之间的区别

Git:无法切换到新的远程分支

gitlab 重定向推送/获取/克隆以登录

django - Git 神秘地删除东西(编辑 : actually django-storages)

c++ - 什么是与 Codeblocks C++ 项目一起使用的好 gitignore?

linux - 执行命令 'git grep grep' 时会发生什么?

任何存储库之外的自定义 2 文件的 git diff?

git - 使用 git clean 删除未跟踪的目录但不删除该目录中的子目录