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는 URL 시작을 사용하여 표시되는 Git 프로토콜의 푸시를 지원하지 않습니다 git://. 오류 메시지에서 알 수 있듯이 푸시하려는 경우 GitHub가 리포지토리에 표시 git@github.com:my_user_name/my_repo.git하는 https://URL을 사용하여 SSH URL 또는 "스마트 HTTP"프로토콜을 사용해야합니다.

(업데이트 : 놀랍게도, 어떤 사람들은 이것으로 "https"가 "스마트 HTTP"를 의미한다고 생각하고 있었지만, Git은 "dumb HTTP"프로토콜을 사용하여 이전에 푸시 할 수 없었습니다. GitHub에서 사용하는 "스마트 HTTP"가 소개되었습니다. httphttps . 또는 이상을 . 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 내부 전송 프로토콜 에서 확인할 수 있습니다 .


그래서 URL을 변경하고 푸시를 재 시도했습니다.이 오류가 발생합니다-오류 : my_user_name / my_repo.git가 없습니다. 정확하게 입력 했습니까? 치명적인 : 원격 끝이 예기치 않게 끊어졌습니다
kapso

설정 한 URL이 GitHub의 리포지토리 페이지에서 복사하여 붙여 넣을 수있는 URL입니까? (
실수는

1
자, GitHub에 리포지토리를 생성해야 푸시 할 수 있습니다. 그렇게 할 때 리포지토리를 복제하거나 푸시하는 방법에 대한 지침을 제공합니다.
Mark Longair

1
방금이 같은 문제가 발생했습니다. 실제로 문제는 github.com과 사용자 이름 사이에 "/"슬래시가 있다는 것입니다. 콜론 ":"이어야합니다. 그것이 문제입니다 : D
Wilmer E. Henao 2016 년

2
@WilmerEHenaoH : 그되었을 수 있습니다 당신의 문제,하지만 내 대답에 질문 또는에 문제가 아니었다) (그냥 관심을, 혼란을 통해 때로는이 자식에서 SSH URL의 두 가지 스타일 , 어떤 용도 중 하나 호스트 이름과 경로를 구분하기위한 콜론과 다른
것들은

37

사용 마크 Longair의 대답 하지만, 저장소에 HTTPS 링크를 사용하십시오 :

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

그런 다음 사용할 수 있습니다 git push origin master.


1
그것은 나를 위해 작동합니다. 그런 다음 유형 git push도 작동합니다.
youngzy

13

사용하는 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

이것에 새로운 사람을 위해 이것에 대한 간단한 해결책이 있습니다 :

로컬 .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
Kevin J. Rice

@ 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

기본적으로 변경 사항을 적용 할 수없는 풀 전용 사용자로 설정됩니다.

내 repo .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에 pubkey를 추가했는데 성공했습니다.

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

yuo가 극복하는 가장 빠른 방법 origin은 제안 을 대체 하는 것입니다.

대신 다음을 git push origin master사용하십시오.

git push git@github.com:my_user_name/my_repo.git master
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.