使用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
Run Code Online (Sandbox Code Playgroud)
tor*_*rek 38
你可以git checkout master
在这一点上.
你正在努力做到这一点.
在将来,而不是:
mkdir repo
cd repo
git init
git remote add origin <url>
git fetch origin
git checkout master
Run Code Online (Sandbox Code Playgroud)
你可以简单地运行:
git clone <url> repo
Run Code Online (Sandbox Code Playgroud)
因为上面的六个命令几乎就是git clone
这样.
在前三个步骤之后 - 创建一个新的,完全空的存储库 - 你有一个处于特殊状态的存储库:它没有提交,所以它没有分支.同时,它确实有一个当前分支,即master
.
换句话说,当前分支是不存在的分支.
这种状态很不寻常,但很正常.如果运行git checkout --orphan newbranch
,则将Git存储库置于相同的状态:1在不存在的分支上.一旦存在要在分支名称下存储的提交哈希,就会创建分支.
每当你运行git checkout <name>
并且没有命名分支时<name>
,Git会检查是否只有一个远程跟踪分支,例如origin/<name>
.如果是这样,Git会创建一个新的命名的分支<name>
,它指向相同的提交origin/<name>
,并且具有origin/<name>
作为其上游.
由于最后一步 - git checkout master
当时master
还没有实际存在 - 是最后一步git clone
,git clone
还将创建一个master
跟踪远程跟踪分支的新分支origin/master
.
1请注意,您保留当前索引/暂存区域内容.对于新的空存储库也是如此,但由于它是一个新的空存储库,索引/暂存区域也是空的,并且"保留空集"并不像保留那样.
运行后git init
,master
您看到的未完全创建。它不存在,因为它还没有指向任何提交。我曾经读到它是设计的。但我认为这是一个令人费解的错误。如果你运行git branch
,它什么都不返回。
运行后git fetch
,以下git checkout master
工作即可完成。它相当于:
git branch master origin/master
git checkout master
git branch -u origin/master
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22397 次 |
最近记录: |