Неможливо Git-push master до Github - 'origin', схоже, не є сховищем Git / дозвіл відмовлено


84

Це питання пов'язане з моєю проблемою в розумінні перебазування, розгалуження та об'єднання , а також з проблемою

Як ви можете приєднатись до свого облікового запису github, оскільки у вашому віддаленому списку є teamMate?

Я з’ясував, що у інших людей була така сама проблема. Здається, проблема пов’язана з /etc/xinet.d/.

Проблема: не вдалося пересунути моє місцеве відділення до головного відділення в Github

я біжу

git push origin master

я отримав

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Повідомлення про помилку підказує мені, що гілка 'origin' відсутня у моєму локальному сховищі git. Таким чином, Git припиняє підключення до Github.

Це дивно, оскільки я не видалив гілку 'origin'.

Моє дерево git є

  dev
* master
  ticgit
  remotes/Math/Math
  remotes/Math/master
  remotes/origin/master
  remotes/Masi/master

Як ви можете пересунути свою локальну гілку до Github , тоді як у вас є філія teamMate у вашому локальному Git?


Відповідь VonC вирішує головну проблему. Я кладу пропуски на свої ключі ssh.

я біжу

$git push github master     

я отримав

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Здається, мені потрібно якось дати парольну фразу для Git.

Як ви можете змусити Github запитувати вашу парольну фразу, а не покладатися на ключ ssh?


Просто оновив свою відповідь. Параметри SSH - не всі. user.name та github.user теж важливі
VonC

Знову
оновив

"Дозвіл відхилено (відкритий ключ)." насправді означає, що ви намагалися увійти за допомогою свого публічного ключа, і дозвіл відмовили, а не заборонили доступ до вашого публічного ключа.
Xiong Chiamiov

Моєю проблемою був інший ключ ssh від іншої системи. Я завантажив інший ключ, і все було добре. Я дізнався це за допомогою фокусу ssh -v git@github.com.
попросту

Відповіді:


96

Що робить

$ git config --get-regexp '^(remote|branch)\.'

повертається (виконується у вашому сховищі git)?

Origin - це лише стандартна умова іменування для посилання на віддалене сховище Git.

Якщо він не посилається на GitHub (а скоріше шлях до сховища вашої команди, шлях, який може бути більше не дійсним або доступним), просто додайте інше джерело, як у цьому записі Bloggitation

$ git remote add origin2 git@github.com:myLogin/myProject.git
$ git push origin2 master

(Я б насправді використовував назву "github", а не "origin" або "origin2")


Дозвіл відмовлено (відкритий ключ).
фатально: віддалений кінець несподівано повісився

Перевірте, чи правильно вказано вашу ідентифікацію gitHub у вашому локальному сховищі Git, як зазначено у довідковому посібнику GitHub . (як user.name, так і github.name - і github.token)

Тоді, блог Stonean пропонує (як це робить Марсіо Гарсія ):

$ cd ~/.ssh
$ ssh-add id_rsa

Aral Balkan додає: створити конфігураційний файл

Рішенням було створити конфігураційний файл під ~ / .ssh /, як зазначено внизу розділу OS X цієї сторінки .

Ось файл, який я додав, згідно з інструкціями на сторінці, і мої натискання знову почали працювати:

Host github.com
User git
Port 22
Hostname github.com
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes

Ви також можете опублікувати результат

ssh -v git@github.com

щоб отримати більше інформації про те, чому підключення ssh від GitHub відхиляє вас.

Також перевірте, чи правильно ви ввели свій відкритий ключ (він повинен закінчуватися на ' ==').
Не вставляйте свій приватний ключ, а свій відкритий. Відкритий ключ виглядатиме приблизно так:

ssh-rsa AAAAB3<big string here>== tek...@gmail.com 

(Примітка: чи використовували ви парольну фразу для своїх ключів ssh? Це було б простіше без парольної фрази)

Перевірте також URL-адресу, що використовується під час натискання ( git@github.com/..., не git://github.com/...)

Переконайтеся, що у вас є агент SSH для використання та кешування ключа.

Спробуйте це:

 $ ssh -i path/to/public/key git@github.com

Якщо це працює, це означає, що ваш ключ не надсилається на GitHub вашим клієнтом ssh.


1
шкода, я не можу проголосувати за вас більше одного разу! У мене ця проблема виникала двічі за два тижні, і після того, як я погуглив її кожного разу, коли знаходив цю публікацію SO. ДЯКУЮ! :)
Ionuț Staicu

1
Я боровся з цим - я змінив усі налаштування git, але ssh-add був тим кроком, якого мені не вистачало - велике спасибі!
metadaddy

Це була лише крихітна пропозиція в контексті цієї чудової відповіді - але мені подобається трохи перейменовувати "Origin" на "GitHub" (або ім'я сервера), це справді допомагає в осмисленні того, куди ви надсилаєте речі.
Alex C

Це спрацювало і у мене. Якщо ви дотримуєтесь інструкцій на github, не одразу стає очевидним, що походження.
nick

help.github.com/win-set-up-git стежити до кінця - це мені допомогло. Дозвіл відмовлено (відкритий ключ). - означає, що ви встановили ключ ssh для вашого git на вашій локальній машині. ssh-keygen -t rsa -C "your_email@youremail.com"
Roger Alien

28

Це проблема з пультом дистанційного керування. Коли ви це зробите git push origin master, originце пульт і masterце гілка, яку ви натискаєте.

Коли ви робите це:

git remote

Б'юся об заклад, список не включає origin. Щоб повторно додати пульт дистанційного керування:

git remote add origin git@github.com:your_github_username/your_github_app.git

Або, якщо він існує, але відформатований неправильно:

git remote rm origin
git remote add origin git@github.com:your_github_username/your_github_app.git

10

Відповідь VonC найкраща, але частина, яка працювала для мене, була надзвичайно простою і начебто похованою серед багатьох інших можливих відповідей. Якщо ви схожі на мене, ви зіткнулися з цією проблемою під час запуску навчального посібника "Початок роботи з рейками", і вам НЕ було налаштовано ваші загальнодоступні / приватні ключі SSH.

Якщо так, спробуйте:

  1. $>cd ~/.ssh

  2. $>ls

  3. Якщо на виході ls є known_hostsі нічого іншого, відвідайте: http://help.github.com/mac-key-setup/ і починайте слідувати інструкціям із розділу "Створення ключа" та вниз.

Після запуску цих інструкцій моя команда "git push origin master" спрацювала.


я просто шукав цю сторінку. дуже багато! = D
Hugo Mota

Це вирішило мою проблему. Моя ОС - Mac OS X, і я дотримувався книги "Підручник з Ruby on Rails 3", і я застряг у розділі 1.3.4, коли мені потрібно було зробити це. git push origin master.Я вперше налаштовував Git і Rails. Сподіваємось, це допомогло іншим людям.
sivabudh

4

У мене така сама проблема, і я думаю, що брандмауер блокує протокол git. Тож зрештою мені доводиться вдаватися до використання https: // для отримання та натискання. Однак це завжди буде вимагати від користувача ввести пароль ...

ось приклад, що працює для мене (просто, щоб поділитися з тими, хто не може використовувати git: // protocol :)

git fetch https://[user-name]@github.com/[user-name]/[project].git

якщо вищевказане працює, ви можете видалити джерело та замінити на

git remote rm origin  
git remote add origin https://[user-name]@github.com/[user-name]/[project].git

1
~/.netrcЯкщо ви хочете, ви можете використовувати файл, який зберігає для вас пароль. Він використовується curl, що і використовує git для передачі HTTP (S), на випадок, якщо вам потрібно знайти особливості того, як ним користуватися.
Arrowmaster

1
@Arrowmaster: зауважте, що якщо ви працюєте в Windows, вам потрібно використовувати ~/_netrc(' _', а не ' .')
VonC

Дякую за коментарі, я спробую це!
ken

Це спрацювало для мене. Дякую. Цікаво, це помилка чи ні.
Larry Battle

1

Я думаю, це ще один випадок, коли повідомлення про помилки git вводять в оману. Зазвичай, коли я бачу цю помилку, це пов'язано з проблемами ssh. Ви додали свій публічний ключ ssh до свого облікового запису github?

Редагувати: Крім того, у дописі на форумі xinet.d йдеться про запуск git-daemon як про службу, щоб люди могли вийти з вашої системи. Не потрібно запускати git-daemon, щоб натискати на github.


1
Я додав свій відкритий ключ до свого облікового запису github. - Проблема почалася після того, як я додав віддалену гілку до свого Git.
Лео Леопольд Герц,

1
Я створив нову пару ключів ssh. Я вставив новий ключ у Github і видалив старий із Github. Ця ж проблема зберігається.
Лео Леопольд Герц,

1

У мене така сама проблема, і я щойно додав вміст ~ / .ssh / id_rsa.pub до свого облікового запису в GitHub. Після цього просто спробуйте ще раз git push origin master, це має спрацювати.


0

Ключове, що слід пам’ятати, це „походження” - це не те значення, яке вам може знадобитися використовувати ... це спрацювало для мене, коли я замінив „походження” на ім’я репо.


0

Можливість того, що наведені вище відповіді не стосуються, полягає в тому, що ви не можете мати доступ до ssh з вашої оболонки. Тобто ви можете бути в мережі (деякі мережі коледжів це роблять), де служба ssh заблокована, і в такому випадку ви зможете отримати не тільки послуги github, але й будь-які інші служби ssh. Ви можете перевірити, чи проблема в цьому, спробувавши скористатися будь-якою іншою службою ssh. Так було зі мною.


0

Я мав цю проблему і намагався вирішити її, включаючи багато з перерахованих вище (конфігураційний файл, налагоджувальний ssh ​​тощо). Врешті-решт, я вирішив це, включивши перемикач -u у git push, відповідно до інструкцій github при створенні нового сховища на місці - Github new Repository

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.