2009-06-03 4 views
3

오늘 git push 문제가 발생했습니다. 분기를 원격 저장소로 푸시하려고했지만 오류가 발생했습니다. 일부 검색 후 git push가 때때로 localref 인수를 필요로하는 이유는 무엇입니까?

, 나는 자식 IRC 채널에 요청했습니다, 누군가는 푸시의 구문 지금까지, 난 그냥 괜찮 았는데 자식 푸시를 사용하여 최대

git push <remote> <localref>:<remoteref> 

라고 말했다. 그러나이 경우 실패했습니다.

나는 원격 서버에 마스터 이외의 분기를 밀어 시도하고, 나는 다음과 같은 오류 있어요 :

error: src refspec xi-temp-dennis does not match any. 
error: failed to push some refs to 'remote.server' 

localRef에 지정함으로써, 갑자기 worken합니다.

제 질문은 왜 이번에 localref를 지정해야합니까?

답변

4

푸시 할 리퍼런스를 지정하지 않고 "git push remote"를 그냥 수행하면 자식은 모두 "일치하는 브랜치"를 푸시합니다. "일치하는 지점"은 로컬 저장소의 지점 이름이 원격 저장소의 지점과 동일한 지점입니다. 원격 저장소의 지점은 로컬 저장소에서 일치하는 지점을 사용하여 업데이트됩니다.

"master"브랜치 만 있고 리모트 repo도 "master"브랜치를 가지고 있다면 "git push remote"는 로컬 마스터를 원격 마스터로 푸시합니다.

원격 저장소에 존재하지 않아야하는 "xi-temp-dennis"라는 새 분기를 만들었습니다. 따라서 Git은 일치하는 분기를 푸시하는 기본 동작을 성공적으로 수행 할 수 없습니다 (따라서 "어떤 것도 일치하지 않습니다"오류).

당신은 심판의 이름이 원격 측에 있어야 어떤 망할 놈 말할 필요하고, 그것을 만들 것입니다 :

 
git push remote xi-temp-dennis:foo 

업데이트 할 것 "foo에"라는 이름의 원격 브랜치를 만들 것입니다. 그러나 이름은 로컬 지사의 이름과 일치하지 않으므로 업데이트를 푸시하기 위해 항상이 동일한 명령 (xi-temp-dennis : foo)을 입력해야합니다. "git push remote"를 입력하고 업데이트가 가능하도록하려면 원격 브랜치를 로컬 브랜치와 동일하게 지정해야합니다.

 
git push remote xi-temp-dennis:xi-temp-dennis 
+0

예, 이제 막 깨닫게되었습니다. 내가 원격 저장소 xi-temp-dennis를 푸시 할 때 원격 저장소의 브랜치를 지정한다고 생각하는 동안 로컬 저장소에서 xi-temp-dennis라는 브랜치를 찾습니다. – Ikke

+0

'git push -u '를 사용하여 다음에'git pull '과 같은 명령에 사용할 수있는 추적 정보를 설정한다는 것에주의하십시오. – Ikke