2012-06-29 3 views
145

github 프로젝트의 원격 마스터 분기를 추적하는 로컬 마스터 분기가 이미 있습니다. 이제, 내 공동 작업자가 같은 프로젝트에 새로운 지점을 만들었으며, 나는 따라 다음을 수행 할 :GitHub에서 생성 된 새로운 원격 분기 추적

  1. 로컬
  2. 메이크업이 새로운 지점이 새로 원격 지사를 만들 추적하는 새로운 지점을 만듭니다.

어떻게해야합니까?

+1

git checkout --track -b /도 작동합니다. – MLister

+10

... 아니면 그냥'git checkout -t /'입니다.''으로 끝나는 리모트 추적 브랜치가 하나 밖에 없다면'git checkout '을 수행하고 무슨 뜻인지 짐작할 수 있습니다. –

+0

[기존 Git 브랜치를 어떻게 원격 브랜치로 추적 시키나요?] (http://stackoverflow.com/q/520650/456814)를 참조하십시오. –

답변

196
git fetch 
git branch --track branch-name origin/branch-name 

첫 번째 명령은 로컬 저장소에 원격 지점이 있는지 확인합니다. 두 번째 명령은 원격 분기를 추적하는 로컬 분기를 만듭니다. 원격 이름이 origin이고 분기 이름이 branch-name이라고 가정합니다.

--track 옵션은 원격 브랜치에 기본적으로 사용되며 생략 할 수 있습니다.

+3

이렇게하면 경고가 발생합니다. refname 'branch-name'이 모호합니다. – Ultrasaurus

+14

해당 브랜치 이름을 가진 원격 브랜치가 하나 밖에 없다면'git checkout '을 실행하면 git이 자동으로 체크 아웃하고 추적 브랜치를 설정합니다. @Mark Longair가 위에 언급 한 내용을 반복해서 말하고 싶습니다. http://stackoverflow.com/questions/11262703/how-to-track-a-new-remote-branch-created-on-github#comment14806580_11262703. –

+0

내 원격 지점의 이름은'remotes/origin/develop'입니까? 단지 '기원/개발'이되어서는 안됩니까? 이것들은 같은가요? –

5

브랜치가 원격 브랜치가 아닌 경우 로컬 브랜치를 리모컨으로 직접 푸시 할 수 있습니다.

git checkout master 
git push origin master 

하거나 dev에 지점

git checkout dev 
git push origin dev 

이 있거나 원격 지사가있는 경우

git branch dev -t origin/dev 

원격 분기를 밀어 다른 posibilites이있는 경우.

원격 저장소 가져 오기 위해 모두의
+0

감사합니다. 그러나 나는 여기에 원격 지점을 밀어 넣고 싶지 않다고 생각합니다 ... – MLister

+0

그런 다음 세 번째 옵션을 선택하십시오. 원격 브랜치가 존재할 때 당신은 로컬 브랜치를 생성하고 원격 브랜치를 추적 할 수있다. – Stony

26

첫째 : 새 분기를 작성하고 원하는 원격 지사 추적을 설정할 수 있습니다보다

git fetch remoteName 

을 :

git checkout -b newLocalBranch remoteName/remoteBranch 

당신은 할 수 있습니다 "git checkout -b"대신 "git branch --track"을 사용하십시오. 기존 현지 지점이없는 경우

git branch --track newLocalBranch remoteName/remoteBranch 
+0

원격 지점을 시작점으로 사용하여'checkout -b'를 수행하면 실제로'--track'을 사용할 필요가 없습니다. –

+5

또한 [이 댓글] (http://stackoverflow.com/questions/11262703/how-to-track-a-new-remote-branch-created-on-github#comment32122710_11262780)에서 지적한 것처럼, 'git checkout '을 실행하고 같은 이름을 가진 원격 브랜치가 있다면 ('git fetch'를 한 후에), 로컬 브랜치는 자동적으로 원격을 추적하도록 설정 될 것입니다. –

23

, 그것은 참으로 간단합니다 : 당신이 가져 오는 경우 예를 들어

git fetch 
git checkout <remote-branch-name> 

origin/feature/Main_Page라는 새 원격 추적 브랜치는 수행이 이 :

git checkout feature/Main_Page 

이렇게하면 원격 분기와 동일한 이름의 로컬 분기가 생성되어 원격 분기를 추적합니다. 이미 로컬 브랜치를 한 경우

git checkout -t <remote>/<remote-branch-name> 

하고, How do you make an existing Git branch track a remote branch? 참조를 삭제하지 않을 : 동일한 지점 이름을 가진 여러 개의 리모컨이있는 경우, 당신은 덜 모호한을 사용할 수 있습니다.

+0

'git checkout 1.5-branch' ('원격/상류/1.5 분기 '는'git branch -a'의 출력에 있습니다) 결과는'error : pathspec'1.5-branch '는 알려진 모든 파일과 일치하지 않습니다 git checkout upstream/1.5-branch'로 변경하면 HEAD가 분리되어 로컬 브랜치가 생성되지 않습니다. 나는이 부분의 대답이 잘못되었다고 생각한다. 이것은 자식과 함께 2.4.3 –

+0

첫 번째 명령은 나를 위해 나를 위해 힘내 1.9.3에서, 다른 리모컨에도 작동합니다. 이 동작이 변경되었을 수 있습니다. 두 번째 명령의 결과는 예상대로입니다. -t가 없으면 리모컨의 해당 특정 버전을 보는 것 이외의 다른 작업을 수행하도록 지정하지 않고 있습니다. – kotoole

+1

@PiotrDobrogost와 동의합니다. 귀하의 진술은 "이것은 같은 이름의 로컬 지점을 만듭니다 ..."라고 오인됩니다. * fetch *는 원격지의 각 브랜치에 대해 * 원격 추적 브랜치 *를 생성합니다. 즉, '/'이라는 로컬 저장소의 지점을 의미합니다. 원격 추적 분기는 읽기 전용이며 마지막 분기시 해당 분기가 원격 위치에 있었는지 나타냅니다. 그 지사 ref에서'checkout '을 호출하면 Piotr이 말한 것과 같이 분리 된 HEAD 모드로 들어간다. 원격 지점을 가져 오도록 지정하면 원하지 않는 원격 추적 분기가 작성되지 않습니다. – scanny

관련 문제