使用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
答案 0 :(得分:26)
此时你可以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
以及一些教程。