로컬 Git 브랜치를 원격 저장소에 복사하는 방법


127

지금까지 다음 단계를 수행했습니다.

  1. 원격 Git 저장소를 복제했습니다
  2. 마스터 브랜치를 실험으로 분기
  3. 실험 브랜치에서 편집 / 테스트 / 커밋 된 코드

이제 실험을 마스터로 병합 할 준비가되지 않았습니다. 그러나 나는 그것이 일부 동료들과 공유하는 저장소이므로 원격 저장소로 다시 밀어 넣고 싶습니다. 실험 브랜치에서 내가 한 일을보고 싶습니다. 나는 일반적으로 SSH를 통해 원격 저장소에 액세스합니다.

원격 저장소의 마스터 분기에 영향을주지 않고 원격 저장소에서 로컬 지점을 공유하려면 어떻게합니까?


이 링크는이 측면에서도 매우 유용합니다. 자식 분기 공유
Vishnu Kumar

가능한 기존
ahsteele 2013

답변:


157

자식 푸시 매뉴얼 페이지 에 따르면 :

 git push origin experimental

experimental소스 리포지토리에서 일치하는 참조를 찾은 다음 (대부분은 찾을 것임 ) 오리진 리포지토리에서 refs/heads/experimental동일한 참조 (예 :)를 업데이트 refs/heads/experimental합니다.
경우 experimental원격으로 존재하지 않았다, 그것은 생성 될 것이다 .

이것은 다음과 같습니다.

git push origin experimental:refs/heads/experimental

experimental현재 experimental분기 를 복사하여 오리진 저장소에 분기 를 작성하십시오 .
이 양식은 로컬 이름과 원격 이름이 다른 경우 원격 저장소에서 새 분기 또는 태그를 작성하는 데만 필요합니다 . 그렇지 않으면 심판 이름 자체가 작동합니다.

또는 git tip 에서 언급 한 것처럼 "지점의 기본 원격"을 설정할 수 있습니다.

git config를 사용하여 지정된 브랜치에 기본 원격을 할당 할 수 있습니다. 이 기본 리모콘은 달리 지정하지 않는 한 해당 분기를 푸시하는 데 사용됩니다.

이것은 git clone을 사용할 때 이미 수행되었으므로 인수없이 git push를 사용하여 로컬 마스터 분기를 푸시하여 원본 저장소의 마스터 분기를 업데이트 할 수 있습니다.

git config branch.<name>.remote <remote> 

이를 수동으로 지정하는 데 사용할 수 있습니다.


Jan 은 ( git> = 1.7.0 ) push -u(또는 push --set-upstream) 옵션을 제안합니다 .

최신이거나 성공적으로 푸시 된 모든 브랜치에 대해 인수가없는 git-pull (1) 및 기타 명령에서 사용하는 업스트림 (추적) 참조를 추가하십시오.

그렇게하면 git config를 수행 할 필요가 없습니다.

git push -u origin experimental

12
로컬 지점을 공개 한 후 로컬 지점을 추적 하려면 -u옵션을 사용해야합니다 push. -u옵션 사용을 잊어 버린 경우 git push -u지점에 나중에 입력 git pull하면 작동합니다.
Jan

이 작업을 수행 할 때 git push origin experimental팩이 업로드되었다는 증거가 없습니다. 리모컨에 이미 이전 푸시의 모든 자료가있는 것 같습니다 . 그냥 심판에 연결해야합니다 .
Kaz

@ Kaz : 새로운 커밋이 이미 원격의 다른 지점에 푸시되면 모든 자료를 갖게됩니다. 이 경우 리모컨에 git push origin experimental지점 experimental을 만들면 됩니다.
VonC

감사합니다! 당신의 대답은 매우 도움이되었습니다.
hakre

15

지사의 이름 인 경우 experimental, 원격의 이름입니다 origin, 그것은이다

git push origin experimental

위와 같은 의견이지만 원격 저장소에 암시 적으로 실험 브랜치를 생성합니까? 아니면 원격 마스터로 푸시됩니까?
Coocoo4Cocoa 2009

1
이 실험 분기를 밀어 원격으로 로컬 측 또는 중 하나에 마스터를 만지지 않는다
존 Douthat에게

1

git push -u <remote-name> <branch-name>새로 만든 브랜치가 동일한 리포지토리에서 스폰되지 않으면 작동하지 않습니다. 예를 들어을 사용하여 새 브랜치를 만들지 않은 경우 git checkout -b new_branch에는 작동하지 않습니다.

예를 들어, 두 개의 서로 다른 리포지토리를 로컬로 복제했으며 repo2 / branch1을 repo1 /에 복사 한 다음 푸시해야했습니다.

링크를 통해 로컬 리포지토리 (다른 리포지토리에서 복제)를 원격 리포지토리로 푸시 할 수있었습니다.



0

tl; dr

$ git push --set-upstream origin your_new_branch

더 많은 정보

당신이 당신의 커밋을 거의하지 않은 후에 :

$ git checkout -b your_new_branch
$ git add file
$ git commit -m "changed file"

업스트림을 지정하여 분기를 다음과 같이 원격 저장소 중 하나로 푸시합니다.

$ git push --set-upstream REMOTE YOUR_BRANCH

리모컨으로 볼 수 있습니다

$ git remote -v

일반적으로 단일 기본 remote가 origin있습니다. 따라서 명령은 다음과 같습니다.

$ git push --set-upstream origin your_new_branch

모든 후속 푸시는로만 가능합니다 git push.

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