Почему в моей ветке git нет мастера?

Я новичок git, и я продолжаю читать о ветке "master". Является ли "master" просто обычным именем, которое люди использовали или имеет особое значение, например HEAD?

Когда я делаю git branch на клоне, который у меня есть, я вижу только одну ветвь - ту, на которой я включен. Нет "мастера" вообще. Если я наберу git checkout master (как я вижу во многих учебниках или руководствах), я получаю

error: pathspec 'master' did not match any file(s) known to git.

Я просто смущен, почему у моего клона нет master, который, по-видимому, подразумевает, что он всегда существует.

Ответ 1

В большинстве хранилищ Git используется master как основная (и по умолчанию) ветвь - если вы инициализируете новое репо Git через git init, оно будет иметь master извлечено по умолчанию.

Однако, если вы клонируете репозиторий, у вас есть ветка по умолчанию, на которую указывает удаленный HEAD (HEAD на самом деле символический ref, указывающий на название ветки). Итак, если клонированный репозиторий имел HEAD, указанный, скажем, foo, тогда ваш клон будет иметь ветвь foo.

У удаленного пользователя, у которого есть клонирование, все еще может быть ветвь master (вы можете проверить с помощью git ls-remote origin master), но вы бы не создали локальную версию этой ветки по умолчанию, потому что git clone проверяет только удаленный HEAD.

Ответ 2

Чтобы проверить ветку, которая не существует локально, но находится в удаленном репо, вы можете использовать эту команду:

git checkout -t -b master origin/master

Ответ 3

master - это просто имя ветки, в ней нет ничего волшебного, кроме того, что она создается по умолчанию при создании нового репозитория.

Вы можете добавить его обратно с помощью git checkout -b master.

Ответ 4

У меня была такая же проблема с совершенно новым репозиторием. Я даже попытался создать один с git checkout -b master, но он не создавал ветку. Затем я понял, что внес некоторые изменения и совершил их, git создал мою главную ветвь.

Ответ 5

В моем случае существовала ветка разработки, но не главная ветвь. Поэтому я клонировал репозиторий, указывая вновь созданную HEAD на существующую ветку. Затем я создал отсутствующую ведущую ветвь и обновил HEAD, чтобы указать на новую главную ветвь.

git clone git:repositoryname --branch otherbranch
git checkout -b master
git update-ref HEAD master
git push --set-upstream origin master

Ответ 6

Если это новое репо, которое вы клонировали, оно все равно может быть пустым, и в этом случае:

git push -u origin master

должен, вероятно, разобраться.

(сделал в моем случае. не уверен, что это та же проблема, подумал, что я должен опубликовать это просто incase. может помочь другим.)

Ответ 7

Я столкнулся с той же проблемой и выяснил эту проблему. Когда вы инициализируете репозиторий, на самом деле нет ветвей. Когда вы запустите проект git add . и затем git commit, и будет создана главная ветка.

Не проверяя ничего, у вас нет главной ветки. В этом случае вам нужно следовать шагам, которые предложили другие люди.

Ответ 8

Кажется, должно быть хотя бы одна локальная фиксация на главной ветке:

git push -u origin master

Итак, если вы сделали git init ., а затем git remote add origin ..., вам все равно нужно сделать:

git add ...
git commit -m "..."