Git/GitHub не может нажать на мастер

Я новичок в 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 [email protected]:my_user_name/my_repo.git

Ответ 1

GitHub не поддерживает перетаскивание по протоколу Git, о чем свидетельствует использование URL-адреса git://. Как говорится в сообщении об ошибке, если вы хотите нажать, вы должны использовать либо URL-адрес SSH [email protected]:my_user_name/my_repo.git, либо протокол "smart HTTP", используя URL https://, который GitHub показывает вам для вашего репозитория.

(Обновление: к моему удивлению, некоторые люди, по-видимому, думали, что этим я предлагаю, что "https" означает "smart HTTP", которого я не был. Git имел обыкновение иметь протокол "немой HTTP", 't разрешить проталкивание до того, как был введен "интеллектуальный HTTP", который использовал GitHub, либо он может использоваться либо через http, либо https. Различия между протоколами передачи, используемыми Git, объясняются в ссылке ниже.)

Если вы хотите изменить URL-адрес источника, вы можете просто сделать:

git remote set-url origin [email protected]:my_user_name/my_repo.git

или

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

Дополнительная информация доступна в 10.6 Git Внутренние - Протоколы передачи.

Ответ 2

Используйте Отклик Longhor answer, но не забудьте использовать ссылку HTTPS в репозитории:

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

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

Ответ 3

Решение 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 = [email protected]:my_user_name/my_repo.git

(И наоборот, вызов git remote set-url... вызывает вышеупомянутое изменение.)

Ответ 4

Это простое решение для кого-то нового для этого:

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

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

Ответ 5

У меня была проблема после обновления Git клиента, и вдруг мой репозиторий не смог нажать.

Я обнаружил, что какой-то старый пульт имел неправильное значение url, даже через мой текущий активный пульт имел то же значение для url и работал нормально.

Но был и параметр pushurl, поэтому добавление его для старого удаленного работало для меня:

До:

[remote "origin"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = [email protected]: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 = [email protected]:user/repo.git

Ответ 6

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

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

Это существенно упрощает настройку пользователя, который не может отменить изменения.

Я исправил это, открыв файл repo .git/config и изменив строку:

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

в

[remote "origin"]
    url = ssh+git://[email protected]/myusername/myrepo.git

Этот протокол ssh+git с пользователем git является механизмом аутентификации, предпочитаемым Github.

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

Ответ 7

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

Ответ 8

Я добавил свой pubkey в github.com, и это было успешно:

ssh -T [email protected]

Но я получил ошибку "Вы не можете нажать", ошибочно сделав это:

git clone git://github.com/mygithubacct/dotfiles.git
git remote add origin [email protected]:mygithubacct/dotfiles.git
...edit/add/commit
git push origin master

Вместо того, чтобы делать то, что я должен был сделать:

mkdir dotfiles
cd dotfiles
git init
git remote add origin [email protected]:mygithubacct/dotfiles.git
git pull origin master
...edit/add/commit
git push origin master

Ответ 9

Чтобы установить https глобально вместо git://:

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

Ответ 10

Самый быстрый путь, которым нужно переходить, заключается в замене origin предложением, которое оно дает.

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

git push [email protected]:my_user_name/my_repo.git master