фатально: У поточного ведучого гілки немає гілки вище за течією


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, а потім спробував відсунути його назад.
користувач1524361

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 )

Для URL-адреси https:

Якщо ваш обліковий запис захищено двофакторною автентифікацією , ваш звичайний пароль не працюватиме (для URL-адреси https), як пояснено тут або тут .

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

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


Як зазначає qwerty в коментарях, ви можете автоматично створити однойменну гілку на пульті за допомогою:

git push -u origin head 

Чому?

  • HEAD (див. Ваш .git\HEADфайл) має відображення поточно перевіреної гілки (наприклад:ref: refs/heads/master )
  • по замовчуванням поштовх політика є простий

Оскільки коефіцієнт refpec, який використовується для цього натискання, є head: (немає пункту призначення), відсутній :<dst>засіб оновити той самий ref як the<src> (head, що є гілкою).

Це не спрацює, якщо HEAD від'єднаний .


1
дивовижно, це те, що нам потрібно для виправлення проблеми з першопричиною, а не просто її виправлення на поверхні
workplaylifecycle

Якщо ви перебуваєте у будь-якій галузі, це корисно git push origin head -u. Автоматично створює однойменну гілку на пульті.
Qwerty

1
@Qwerty Дякую, хороший момент. Я включив ваш коментар (з додатковими подробицями) у відповідь для більшої наочності.
VonC

115

Також ви можете використовувати таку команду:

git push -u origin master

Це створює (-u) іншу гілку у віддаленому репо. Після того, як аутентифікація за допомогою ssh буде зроблена, це є.


2
Це дійсно має відношення до проблеми, оскільки проблема полягає в аутентифікації. Він також заявив, що вже намагався це зробити на своїй посаді.
Майк Прекуп

2
Я відмовився з 2 причин. 1-й: ОП заявила, що вже намагалася це зробити. Другий: -uпараметр - це ярлик для --set-upstreamпараметра, який не має нічого спільного зі створенням нової гілки. З документації -uабо --set-upstreamпараметра : "Для кожної гілки, яка є оновленою або успішно висунутою, додайте посилання вгору за потоком (відстеження), використовуваним без аргументів git-pull [1] та іншими командами.". Насправді я не розумію, чому ця відповідь настільки оскаржена, як і вводить в оману.
louisfischer

38

Мабуть, ви також отримуєте це повідомлення про помилку, коли ви забудете --allпараметр при першому натисканні. я написав

git push -u origin

яка дала цю помилку, вона мала бути

git push -u origin --all

О, як я люблю ці помилки копіювання-вставки ...


3
Дякую. Я отримував цю помилку в коді Visual Studio, і це спрацювало, але в контексті багатьох розробників хтось може пояснити, що це робило?
Пекло.Бент


13

Спробуйте скористатися цим сценарієм

git push -f --set-upstream origin master

7
Вам слід надати більше пояснень щодо того, як і чому це працює.
Беньо Латіньє

6
"непогано" - це дійсно погане пояснення чого-небудь. "Непогано" робить вашу відповідь дуже поганою.
GhostCat

Це не робить нічого для вирішення зазначеної помилки в ОП: "Не вдалося підтвердити автентифікацію"
Шон Бін

Так. Це спрацювало для мене. Я думаю, що це змушує виконувати зобов'язання перед висхідною (віддаленою) гілкою.
vkg

12

Якщо визначити дію git push вона повинна виконати її, якщо в командному рядку не вказано refspec, в віддаленому режимі не налаштовано жодних refspec, і жодна з опцій, наведених у командному рядку, не передбачає refspec.

Просто зроби це:

git config --global push.default current

тоді

git push

1
Ви повинні знати, що це змінює ваші глобальні налаштування git, що може мати негативні наслідки. Але саме це я шукав.
Mavamaarten

@Mavamaarten, які можливі несприятливі наслідки?
kosii

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

Спочатку використовуйте git pull origin your_branch_name Потімuse git push origin your_branch_name


Вибачте, якщо це звучить нерозумно. Як дізнатися назву моєї філії. Моє репо в AWS.
Pravinraj Venkatachalam

Використовуйте "гіт гілки"
Дарій Міліаускас

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 master origin Це правильна команда. Спробуйте

Підрахунок об’єктів: 8, зроблено. Дельта стиснення з використанням до 2 ниток. Стиснення об’єктів: 100% (4/4), зроблено. Написання об’єктів: 100% (8/8), 691 байт | 46,00 Кб / с, виконано. Всього 8 (дельта 1), повторно використане 0 (дельта 0) віддалене: Розв’язування дельт: 100% (1/1), виконано.

  • [нова гілка] master -> master master Branch встановлена ​​для відстеження віддаленого майстра відділення від походження.

    It was successful. Try to create new u branch 
    

0

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

git push myorigin feature/23082018_my-feature_eb

0

Для мене я підштовхував зміни до приватного репо, до якого не мав доступу для запису. Переконайтеся, що у вас є дійсні права доступу, виконуючи операції поштовху чи потягу.

Ви можете безпосередньо підтвердити через


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.