Невозможно Git-push master на Github - 'origin' не похоже на репозиторий git / доступ запрещен

84

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

Как вы можете зафиксировать свою учетную запись github, если у вас есть товарищ по команде в вашем удаленном списке?

Я узнал, что у других была такая же проблема. Проблема, похоже, связана с /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?

Лео Леопольд Герц 준영
источник
Только что обновил свой ответ. Параметры ssh - это еще не все. user.name и github.user тоже важны
VonC
Обновил мой ответ снова, с еще несколькими проверками конфигурации ssh
VonC
«В разрешении отказано (публичный ключ)». на самом деле означает, что вы пытались войти в систему, используя свой публичный ключ, и в разрешении было отказано, вместо того, чтобы получить доступ к вашему публичному ключу.
Xiong Chiamiov
Моя проблема заключалась в другом ssh-ключах из другой системы. Я загрузил другой ключ, и все было хорошо. Я выяснил это с помощью трюка ssh -v git@github.com.
nalply

Ответы:

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

Арал Балкан добавляет: создайте файл конфигурации

Решением было создать конфигурационный файл в ~ / .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

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

VonC
источник
1
жаль, что я не могу проголосовать за тебя больше одного раза! У меня была эта проблема дважды за две недели, и после того, как я гуглил, я каждый раз находил этот пост SO. БЛАГОДАРЯ! :)
Ionuț Staicu
1
Я боролся с этим - я изменил всю конфигурацию git, но ssh-add был тем шагом, который мне не хватало - большое спасибо!
metadaddy
Это было всего лишь крошечное предложение в контексте этого замечательного ответа, но мне нравится переименование «Origin» в «GitHub» (или имя сервера), это действительно помогает понять, куда вы отправляете сообщения.
Alex C
Это сработало и для меня. Если вы будете следовать инструкциям на github, не сразу станет ясно, что такое происхождение.
Ник
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
Хьюго Мота,
Это решило мою проблему. Моя ОС - Mac OS X, и я следил за книгой «Ruby on Rails 3 Tutorial», и я застрял в разделе 1.3.4, когда мне нужно было сделать это. git push origin master.Это был мой первый раз, когда я настраивал Git и Rails. Надеюсь, это помогло другим людям.
sivabudh
4

У меня такая же проблема, и я думаю, что брандмауэр блокирует протокол 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
При желании вы можете использовать ~/.netrcфайл, в котором хранится пароль. Он используется curl, и это то, что git использует для передачи HTTP (S), на случай, если вам нужно узнать подробности того, как его использовать.
Arrowmaster
1
@Arrowmaster: обратите внимание, что если вы работаете в Windows, вам нужно использовать ~/_netrc(' _', а не ' .')
VonC
Спасибо за комментарии, попробую!
ken
Это сработало для меня. Благодарю. Интересно, ошибка это или нет.
Ларри Батл
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

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

ATSiem
источник
0

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

Шраван
источник
0

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

sjpknight
источник