Git / GitHub не может подтолкнуть к мастеру - PullRequest
146 голосов
/ 26 сентября 2011

Я новичок в 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

Ответы [ 10 ]

241 голосов
/ 26 сентября 2011

GitHub не поддерживает проталкивание по протоколу Git, о чем свидетельствует использование вами URL, начинающегося git://. Как говорится в сообщении об ошибке, если вы хотите отправить, вы должны использовать SSH URL git@github.com:my_user_name/my_repo.git или протокол «smart HTTP», используя https:// URL, который GitHub показывает вам для вашего хранилища.

(Обновление: к моему удивлению, некоторые люди, по-видимому, подумали, что под этим я подразумевал, что «https» означает «умный HTTP», а я - нет. У Git был протокол «тупого HTTP», который не позволял использовать push до того, как появился «умный 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 - Протоколы передачи .

37 голосов
/ 20 июля 2013

Используйте Отметьте ответ Longair , но обязательно используйте HTTPS-ссылку на хранилище:

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

Вы можете использовать тогда git push origin master.

13 голосов
/ 29 июня 2012

Решение Mark Longair с использованием 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 голосов
/ 01 марта 2013

Для этого новичка есть простое решение:

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

[remote "origin"]
    url = https://github.com/your_username/your_repo
1 голос
/ 27 марта 2017

Эта ошибка возникает, когда вы клонируете репо с помощью вызова, подобного следующему:

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, требуя от вас вручную ввести пароль, который вы, вероятно, не хотите.

1 голос
/ 02 июня 2014

У меня была проблема после обновления клиента 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
0 голосов
/ 06 ноября 2017

Для установки https глобально вместо git://:

git config --global url.https://github.com/.insteadOf git://github.com/
0 голосов
/ 07 мая 2016

Я добавил свой pubkey на 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 голосов
/ 24 января 2015

Самый быстрый способ преодолеть это - заменить origin предложенным предложением.

Вместо git push origin master используйте:

git push git@github.com:my_user_name/my_repo.git master
0 голосов
/ 26 сентября 2011

Если вы перейдете к http://github.com/my_user_name/my_repo, вы увидите текстовое поле, в котором вы можете выбрать путь к вашему хранилищу.Вы захотите использовать это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...