фатальный: текущий мастер ветки не имеет ветки upstream


227

Я пытаюсь перенести один из моих проектов на github, и я получаю эту ошибку:

peeplesoft@jane3:~/846156 (master) $ git push

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

     git push --set-upstream origin master

Итак, я попробовал это и получил это:

peeplesoft@jane3:~/846156 (master) $ git push --set-upstream origin master

fatal: Authentication failed

Другая ветка stackoverflow предложила мне попробовать следующее с неутешительными результатами.

peeplesoft@jane3:~/846156 (master) $ git push -u origin master

fatal: Authentication failed

Тогда я попробовал это:

peeplesoft@jane3:~/846156 (master) $ git config remote.origin.push HEAD

peeplesoft@jane3:~/846156 (master) $ git push

fatal: Authentication failed

Есть намеки?


1
Репозиторий должен существовать на github, прежде чем вы сможете перейти к нему. Является ли? И репо вы работаете с клоном этого?
матовый

Я клонировал репозиторий из Github, затем добавил 1 строку в файл readme и попытался отодвинуть его обратно.
user1524361

1
я получаю ту же ошибку, потому что я забыл зафиксировать файлы
Mateen

3
-u и --set-upstream одинаковы
brainLoop

Хотел дать всем знать gitкоманды, которые опубликовал ОП, помог мне, даже больше, чем ответы
Натан

Ответы:


94

Вы устранили исправление, но независимо от этой проблемы (которую я объяснил в разделе « Почему мне нужно явно выдвигать новую ветвь? »: git push -u origin masterИли git push -u origin --all), теперь вам нужно решить проблему аутентификации.

Это зависит от вашего URL (ssh как в ' git@github.com/yourRepo, или https как вhttps://github.com/You/YourRepo )

Для https URL:

Если ваша учетная запись защищена двухфакторной аутентификацией , ваш обычный пароль не будет работать (для URL https), как описано здесь или здесь. .

Та же проблема, если ваш пароль содержит специальный символ (как в этом ответе )

Если https не работает (потому что вы не хотите генерировать вторичный ключ, PAT: персональный токен доступа), тогда вы можете переключиться на ssh, как я показал здесь .


Как отметил qwerty в комментариях, вы можете автоматически создать ветку с тем же именем на удаленном компьютере с помощью:

git push -u origin head 

Зачем?

  • HEAD (см. Ваш .git\HEADфайл) имеет ссылку на текущую извлеченную ветку (например:ref: refs/heads/master )
  • по умолчанию толчок политика является простой

Так как refpec, используемый для этого push, является head: (no destination), отсутствующее :<dst>означает обновить тот же ref, что и<src> (head, который является ветвью).

Это не будет работать, если HEAD отсоединен, хотя.


1
офигенно, это то, что нам нужно для устранения первопричины, а не только для ее устранения на поверхности
workplaylifecycle

Если вы находитесь на любой ветке, это полезно git push origin head -u. Автоматически создает ветку с тем же именем на пульте.
Qwerty

1
@Qwerty Спасибо, хорошая мысль. Я включил ваш комментарий (с дополнительными деталями) в ответ для большей наглядности.
VonC

115

Также вы можете использовать следующую команду:

git push -u origin master

Это создает (-u) другую ветку в вашем удаленном репо. Как только аутентификация с использованием ssh завершена, это так.


2
Это действительно относится к проблеме, так как проблема с аутентификацией. Он также заявил, что он уже попробовал это в своем посте.
Майк Precup

2
Я проголосовал по 2 причинам. 1-й: ОП заявил, что он уже пробовал это. 2-й -uвариант : опция является ярлыком для --set-upstreamопции, которая не имеет ничего общего с созданием новой ветви. Из документации опции -uили--set-upstream : «Для каждой ветки, которая обновлена ​​или успешно отправлена, добавьте ссылку вверх по течению (отслеживание), используемую git-pull [1] без аргументов и другими командами». На самом деле я не понимаю, почему за этот ответ проголосовали настолько, насколько он вводит в заблуждение.
Луисфишер

38

Видимо, вы также получаете это сообщение об ошибке, когда вы забываете --allпараметр при первом нажатии. я написал

git push -u origin

который дал эту ошибку, она должна была

git push -u origin --all

О, как я люблю эти ошибки копирования-вставки ...


3
Спасибо. Я получал эту ошибку в коде Visual Studio, и это работало, но может ли кто-нибудь объяснить, что это сделало в контексте нескольких разработчиков?
Hell.Bent


13

Пожалуйста, попробуйте этот сценарий

git push -f --set-upstream origin master

7
Вы должны предоставить больше объяснений о том, как и почему это работает.
Benoît Latinier

6
«Неплохо» - действительно плохое объяснение чего-либо. «не плохо» делает ваш ответ действительно плохим.
GhostCat

Это ничего не делает для исправления упомянутой ошибки OP: «Аутентификация не удалась»
Шон Бин

Да. Это сработало для меня. Я думаю, что это принуждает коммит к восходящей (удаленной) ветке.
vkg

12

Если вы определите действие git push оно должно выполнить, если в командной строке не задан refspec, в удаленном не настроен refspec, и ни один из параметров, заданных в командной строке, не подразумевает refspec.

Просто сделай это:

git config --global push.default current

затем

git push

1
Вы должны знать, что это меняет ваши глобальные настройки git, что может иметь некоторые негативные последствия. Но это было именно то, что я искал.
Mavamaarten

@Mavamaarten, каковы возможные побочные эффекты?
Косия

7

Что ж, у меня возникла та же проблема при загрузке, и я решил ее, выполнив то же самое, что он говорит: раньше я пытался протолкнуть терминал в свой репозиторий в linux по https, например

git push https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git

Но не было никакого результата, и поэтому я углубился и попытался:

git push --set-upstream https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git master

И это сработало. Таким образом, вам будет предложено ввести имя пользователя и пароль. Я также сгенерировал токен и вместо пароля я вставил токен, и, таким образом, все было сделано успешно.

  1. Для создания токена перейдите в свою учетную запись Github и в «Настройки разработчика», а затем создайте другой токен.
  2. Получив это, скопируйте этот токен и вставьте в запрос пароля, когда его спросят.

6

на очень простой стороне, когда у вас есть другие ветви, вы не можете просто использовать для толкания ветви

git push

Но вам нужно указать ветку сейчас, даже если у вас есть извлечение ветви, которую вы хотите нажать, поэтому

git push origin <feature_branch>

Где может быть даже masterветка


5

Я сделал простую ошибку, забыв зафиксировать:

git commit -m "first commit"

потом git push origin masterработал.


4

У меня такая же проблема

введите описание изображения здесь

Я решил, что использовал команду ниже

$ git branch --set-upstream develop origin/develop

и он добавит конфиг в файл конфигурации в папке .git.

введите описание изображения здесь



3

Это простое решение, которое у меня сработало на macOS Sierra. Я сделал эти две команды:

git pull --rebase git_url(Ex: https://github.com/username/reponame.git)
git push origin master

Если он показывает какую-либо фатальную ошибку в отношении апстрима после любого будущего нажатия, просто запустите

git push --set-upstream origin master

0

1. Компьютер и ваш github связаны. Используйте SSH. Код компьютера, чтобы вам не нужно было отправлять проверенное, введите описание изображения здесь

2. git не может управлять пустой папкой. Таким образом, вы должны написать такой readme.md, сохраненный в файле. В противном случае вы не найдете файл.

3. В вашем местном проекте ничего нового нет. пожалуйста

git init

git remote add origin +"githublink"

git add .

git commit -m "" еще раз.

4. затем git pull origin master(ключ)

5. Наконец git push origin master(решить всю проблему).

http://my.oschina.net/psuyun/blog/123005参考链接


0

Если вы пытаетесь отправить свой код прямо в главную ветку, используйте команду

git push origin master

Это помогает мне.


0

Я также получил ту же ошибку. Я думаю, что это потому, что я клонирую ее и пытаюсь отодвинуть назад. $ git push -u origin master Это правильная команда. Попробуйте это

Подсчет объектов: 8, сделано. Дельта-сжатие с использованием до 2 потоков. Сжатие объектов: 100% (4/4), сделано. Написание объектов: 100% (8/8), 691 байт | 46,00 КиБ / с, готово. Итого 8 (дельта 1), повторно использованный 0 (дельта 0) удаленный: разрешение дельт: 100% (1/1), выполнено.

  • master [new branch] -> master Мастер ветки настроен для отслеживания удаленного мастера ветки от источника.

    It was successful. Try to create new u branch 
    

0

У меня была такая же проблема, причина была в том что я забыл указать ветку

git push myorigin feature/23082018_my-feature_eb

0

Для меня я выдвигал изменения к частному репо, к которому у меня не было доступа для записи. Убедитесь, что у вас есть действительные права доступа при выполнении операций push или pull.

Вы можете напрямую подтвердить через


1
"Напрямую проверить через" что?
Майк Пул

0

Для меня это было потому, что я удалил скрытую папку .git .

Я исправил это путем удаления папки, повторного клонирования и повторного внесения изменений.


0

Если вы находитесь в любой ветке, вы можете использовать это:

git push origin head -u

Это автоматически создаст новую ветку с тем же именем на пульте.


-1

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

git checkout -b branchname origin/branchname

Здесь по умолчанию мы настраиваем the upstream branch, поэтому вы не столкнетесь с упомянутой проблемой.


-2

Для меня проблема происходит от названия моей ветки: "# name-of-my-branch", без "#" все работает нормально!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.