Я новичок в git и продолжаю читать об "основной" ветке. «Мастер» - это просто обычное имя, которое люди использовали, или оно имеет особое значение HEAD
?
Когда я делаю это git branch
на своем клоне, я вижу только одну ветвь - ту, на которой я работаю. Никакого «хозяина». Если я печатаю git checkout master
(как я вижу во многих учебных пособиях или руководствах), я получаю
error: pathspec 'master' did not match any file(s) known to git.
Я просто смущен тем, почему у моего клона нет того, master
что все, кажется, подразумевают, что он всегда существует.
git add .
,git commit -m "Test"
, тоgit push -u origin master
.git ls-remote origin master
ничего не показывает.Чтобы проверить ветку, которая не существует локально, но находится в удаленном репо, вы можете использовать эту команду:
источник
fatal: Cannot update paths and switch to branch 'master' at the same time.
master
- это просто имя ветки, в нем нет ничего волшебного, кроме того, что оно создается по умолчанию при создании нового репозитория.Вы можете добавить его обратно с помощью
git checkout -b master
.источник
git checkout -b master
просто добавляет для меня новую ветку от текущей.git checkout -b master
создастmaster
ветку из всего, чтоHEAD
есть, поэтому, если вы находитесь в другой ветке, он создастmaster
ветку из нее . За исключением случаев, когда у вас уже естьmaster
ветка (что будет, если, например, вы не удалили ее или никогда не фиксировали в ней). Если у вас уже естьmaster
ветка, эта команда просто выдаст вам ошибку.master
- это просто ветка, которую можно удалить с помощьюgit branch -d master
. Хотя git защитит вас от удаления ветки, в которой вы сейчас находитесь, нет ничего особенного, защищающегоmaster
ветку. Точнее говоря, сложно сказать, как вы это сделали. Возможно, вы воспользуетесьhistory
командой своей оболочки, чтобы посмотреть?git checkout -b master
будет работать, только если для HEAD установлено значение origin / master. В любом другом случае (например, вы находитесь на «разработке»),git checkout -b master
будет создана ветка с именем «master», основанная на текущей позиции HEAD (например, от «develop»). Также необходимо указать, какая ветка будет лапой для новой. @Bunyk имеет правильный ответ в этой теме: stackoverflow.com/a/21330943/287109На самом деле у меня была такая же проблема с совершенно новым репозиторием. Я даже попытался создать его с помощью
git checkout -b master
, но он не создал ветку. Затем я понял, что если я внес некоторые изменения и зафиксировал их, git создал мою основную ветку.источник
В моем случае была ветка разработки, но не ветка мастера . Поэтому я клонировал репозиторий, указав только что созданный HEAD на существующую ветку. Затем я создал недостающую главную ветку и обновил HEAD, чтобы указать на новую главную ветку.
источник
если это новое репо, которое вы клонировали, оно может быть пустым, и в этом случае:
git push -u origin master
должен, вероятно, разобраться.
(сделал в моем случае. не уверен, что это та же проблема, подумал, что я должен опубликовать это на всякий случай. может помочь другим.)
источник
Я столкнулся с той же проблемой и выяснил проблему. Когда вы инициализируете репозиторий, на самом деле нет никаких веток. Когда вы запускаете проект, запускайте,
git add .
а затемgit commit
будет создана главная ветка.Без проверки у вас нет главной ветки. В этом случае вам нужно выполнить шаги, предложенные здесь другими людьми.
источник
Кажется, что в главной ветке должен быть хотя бы один локальный коммит:
Так что если вы сделали ,
git init .
и тогдаgit remote add origin ...
, вам все еще нужно сделать:источник
Если вы создаете новый репозиторий из веб-интерфейса Github, вы иногда получаете имя «main» вместо «master». Используя команду
git status
со своего терминала, вы увидите, в каком месте вы находитесь. В некоторых случаях вы бы увиделиorigin/main
.Если вы пытаетесь отправить свое приложение в облачную службу через интерфейс командной строки, используйте «main», а не «master».
пример:
git push heroku main
источник