got 'fatal: branch 'master' не существует' в git

используя git какое-то время он очень мощный и красивый..

но также немного запутался об этом:

он должен под мастером филиала после того, как я init 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 ответов


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 создает new филиала это указывает на то же самое, что и 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

вы, вероятно, ищете git checkout master, а также некоторые учебники.