Git / GitHub не може підштовхнути майстер


151

Я новачок у Git / GitHub і зіткнувся з проблемою. Я створив тестовий проект і додав його до локального сховища. Зараз я намагаюся додати файли / проект до віддаленого сховища.

Ось що я зробив (і це спрацювало) -

git remote add origin git://github.com/my_user_name/my_repo.git

Тепер, коли я намагаюся підштовхнути сховище до GitHub, використовуючи таку команду, я отримую таку помилку -

git push origin master

Помилка -

fatal: remote error:
You can't push to git://github.com/my_user_name/my_repo.git
Use git@github.com:my_user_name/my_repo.git

Унизу всіх сторінок github є посилання довідки ( help.github.com ). Довідка описує багато тем, включаючи цю. Я б запропонував прочитати їх, а потім задати питання про конкретні речі, які ви не розумієте.
Jamessan

21
якби Jamessan вказав на певне місце на довідкових сторінках, це було б корисніше.
Deonomo

Відповіді:


244

GitHub не підтримує натискання на протокол Git, про що вказує ваше використання URL-адреси на початку git://. Як йдеться у повідомленні про помилку, якщо ви хочете натиснути, вам слід використовувати або URL-адресу SSH, git@github.com:my_user_name/my_repo.gitабо протокол "розумного HTTP", використовуючи https://URL-адресу, яку GitHub показує для вашого сховища.

(Оновлення: на мій подив, деякі люди, мабуть, думали, що цим я припускаю, що "https" означає "розумний HTTP", чого я не був. У Git був "тупий HTTP" протокол, який не дозволяв натискати раніше був введений "розумний HTTP", який використовує GitHub - або його можна використовувати над будь-яким httpабо https. Відмінності між протоколами передачі, які використовує Git, пояснюються за посиланням нижче.)

Якщо ви хочете змінити URL-адресу походження, ви можете просто зробити:

git remote set-url origin git@github.com:my_user_name/my_repo.git

або

git remote set-url origin https://github.com/my_user_name/my_repo.git

Більше інформації доступно в 10.6 Git Internals - протоколи передачі .


Тож я змінив URL-адресу та повторив поштовх, отримайте цю помилку зараз - ПОМИЛКА: my_user_name / my_repo.git не існує. Ви ввели це правильно? фатально: віддалений кінець повісився несподівано
kapso

Чи точно визначена вказана вами URL-адреса, яку ви можете скопіювати та вставити зі сторінки свого сховища в GitHub? (До речі, це, до речі
,.

1
Добре, вам доведеться створити сховище на GitHub, перш ніж ви зможете натиснути на нього - коли ви це зробите, він дасть вам вказівки щодо клонування чи перенесення до сховища.
Марк Лонгейр

1
У мене просто була ця сама проблема. Насправді проблема полягала в тому, що у вас нахилена коса "/" між github.com та вашим ім'ям користувача. І це має бути двокрапка ":". У цьому проблема: D
Вільмер Е. Енао

2
@WilmerEHenaoH: це могло бути вашою проблемою, але це не проблема в питанні чи в моїй відповіді;) (Просто для інтересу, іноді виникає плутанина щодо двох стилів URL-адреси SSH в git , один з яких використовує двокрапка для відокремлення імені хоста і шляху, а інший з них не відповідає.
Марк Лонгейр,

37

Використовуйте відповідь Марка Лонгайра , але обов'язково використовуйте посилання HTTPS до сховища:

git remote set-url origin https://github.com/my_user_name/my_repo.git

Ви можете використовувати потім git push origin master.


1
Це працює для мене. Тоді просто тип git pushтакож працює.
youngzy

13

Використання рішення Марка Лонгайра git remote set-url...досить зрозуміле. Ви можете також отримати таку саму поведінку, безпосередньо відредагувавши цей розділ .git / config-файлу:

перед:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git://github.com/my_user_name/my_repo.git

після:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:my_user_name/my_repo.git

(І навпаки, git remote set-url...виклик призводить до зазначених змін.)


2

Існує просте рішення цього для когось нового в цьому:

Відредагуйте файл конфігурації у вашому локальному каталозі .git ( config). Змініть git:на https:нижче.

[remote "origin"]
    url = https://github.com/your_username/your_repo

1
Неправильний протокол https не дозволить натиснути. Див .: Книга "Pro Git", розділ 4.1.4 "Протокол HTTP / S". Посилання: git-scm.com/book/en/v2
Кевін Дж. Райс

@ KevinJ.Rice: хмм, де це говорить , що ? Github використовує інтелектуальний протокол HTTP, і це дозволяє добре натиснути .
Martijn Pieters

1

У мене виникла ця проблема після оновлення клієнта Git , і раптом мій сховище не зміг підштовхнути.

Я виявив, що якийсь старий пульт мав неправильне значення url, навіть через мій активний пульт дистанційного керування мав те саме значення urlі працював чудово.

Але був і pushurlпарам, тому додавання його для старого пульта працювало для мене:

Перед:

[remote "origin"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = git@github.com:user/repo.git

ПРИМІТКА. Ця частина файлу "config" не використовувалася протягом століть, але новий клієнт скаржився на неправильну URL-адресу:

[remote "composer"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/composer/*

Тому я додав pushurlпарам до старого пульта:

[remote "composer"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/composer/*
    pushurl = git@github.com:user/repo.git

1

Ця помилка виникає, коли ви клонуєте РЕПО, використовуючи дзвінок типу:

git clone git://github.com/....git

Це по суті створює вас як користувача, який працює лише за допомогою потягу, який не може продовжувати зміни.

Я вирішив це, відкривши .git/configфайл мого репо і змінивши рядок:

[remote "origin"]
    url = git://github.com/myusername/myrepo.git

до:

[remote "origin"]
    url = ssh+git://git@github.com/myusername/myrepo.git

Цей ssh+gitпротокол з gitкористувачем є механізмом аутентифікації, який надає перевагу Github.

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



0

Я додав свій віскі на github.com, і це вдалося:

ssh -T git@github.com

Але після помилкового помилки я отримав помилку "Ви не можете натиснути":

git clone git://github.com/mygithubacct/dotfiles.git
git remote add origin git@github.com:mygithubacct/dotfiles.git
...edit/add/commit
git push origin master

Замість того, щоб робити те, що я повинен був зробити:

mkdir dotfiles
cd dotfiles
git init
git remote add origin git@github.com:mygithubacct/dotfiles.git
git pull origin master
...edit/add/commit
git push origin master

0

Щоб встановити httpsглобально замість git://:

git config --global url.https://github.com/.insteadOf git://github.com/


-1

Найшвидший спосіб перемогти його - замінити originпропозицією, яку він дає.

Замість цього git push origin masterвикористовуйте:

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