Невозможно выполнить Git-push master для Github - «origin», по-видимому, не является хранилищем git / разрешение отклонено - PullRequest
83 голосов
/ 28 мая 2009

Этот вопрос связан с моей проблемой в понимании rebase, branch и merge , и к проблеме

Как вы можете зафиксировать свою учетную запись на 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'.

Мое дерьмовое дерево

  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?

Ответы [ 9 ]

96 голосов
/ 28 мая 2009

Что значит

$ 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»)


В доступе отказано (publickey).
фатальный: удаленный конец неожиданно зависает

Проверьте, правильно ли ваша личность в gitHub объявлена ​​в вашем локальном репозитории Git, как указано в Справочном руководстве GitHub . (и user.name, и github.name, и github.token)

Затем Stonean Blog предлагает (как и Марсио Гарсия ):

$ 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

чтобы получить больше информации о том, почему соединение GitHub ssh отклоняет вас.

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

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

Если это работает, то это значит, что ваш ssh-клиент не отправляет ваш ключ на GitHub.

28 голосов
/ 28 мая 2009

Это проблема с вашим пультом. Когда вы делаете 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 голосов
/ 06 апреля 2010

Ответ VonC самый лучший, но часть, которая сработала для меня, была очень простой и как бы похоронена среди множества других возможных ответов. Если вы похожи на меня, вы столкнулись с этой проблемой, выполняя учебное пособие «Приступая к работе с rails», и вы НЕ настраивали свои публичные / закрытые ключи SSH.

Если так, попробуйте это:

  1. $>cd ~/.ssh

  2. $>ls

  3. Если вывод команды ls равен known_hosts и ничего больше, посетите: http://help.github.com/mac-key-setup/ и начните следовать инструкциям из раздела «Генерация ключа» и вниз.

После выполнения этих инструкций сработала моя команда "git push origin master".

4 голосов
/ 25 февраля 2011

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

вот пример того, что работает для меня (просто поделиться с теми, кто не может использовать протокол git: // :)

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 голос
/ 07 октября 2009

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

1 голос
/ 28 мая 2009

Я думаю, что это еще один случай, когда сообщения об ошибках git вводят в заблуждение. Обычно, когда я видел эту ошибку, это из-за проблем с ssh. Вы добавили свой открытый ключ ssh в свою учетную запись github?

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

0 голосов
/ 09 апреля 2012

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

0 голосов
/ 02 декабря 2011

Одна из причин, по которой вышеприведенные ответы не рассматриваются, заключается в том, что у вас может не быть доступа ssh из вашей оболочки. То есть вы можете находиться в сети (некоторые сети колледжей делают это), где служба ssh заблокирована. В этом случае вы сможете получать не только службы github, но и любые другие службы ssh. Вы можете проверить, в этом ли проблема, попытавшись использовать любой другой сервис ssh. Так было и у меня.

0 голосов
/ 22 сентября 2011

Им нужно помнить, что «origin» - это не то значение, которое вам, возможно, нужно использовать ... это сработало для меня, когда я заменил «origin» именем репо.

...