2010-05-21 7 views
212

git pull origin mastergit pull origin/master의 차이점은 무엇입니까?git pull origin master와 git pull origin/master의 차이점

+1

calmh 꽤 많이 다루었지만, 대답이 없다면'git pull origin/master'을하지 말아야한다는 것입니다. [로컬에 저장된] 원격 브랜치'origin/master'를 병합하려면'git merge origin/master'을 사용하십시오. – Cascabel

+3

@ Jefromi : git pull과 비교하여 git merge를하는 것이 항상 더 나은 이유에 대해 설명 할 수 있습니까? – Rachel

+13

'git pull'은'git fetch' 다음에'git merge'가 오는 것을 의미합니다. 리모컨에서 내용을 가져온 다음 현재 분기에 병합합니다. 하지만 'origin/master'는 로컬 브랜치 (원격 브랜치 추적)입니다. 병합하려면 아무 것도 가져올 필요가 없습니다. 실제로 리모컨에서 가져 오지 않을 때'git pull origin/master'라고 말하는 것은 오해의 소지가 있습니다. – Cascabel

답변

257

git pull origin masterorigin 리모컨의 master 분기에서 변경 사항을 가져 와서 로컬 체크 아웃 분기로 병합합니다.

git pull origin/master은 로컬로 저장된 분기 origin/master에서 변경 사항을 가져 와서 로컬 체크 아웃 분기로 병합합니다. origin/master 브랜치는 근본적으로 origin에서 마지막으로 가져온 것의 "캐시 된 사본"입니다. 따라서 git 용어로 원격 지점이라고합니다. 이것은 다소 혼란 스러울 수 있습니다.

"원격 분기"를 보려면 git branchgit branch -r으로 어떤 분기를 사용할 수 있는지 확인할 수 있습니다.

+0

의 경우 'git pull origin master'는 항상 master 브랜치에 병합되며, 내 repo의 다른 브랜치에서 am을 말하고 위의 명령을 수행하면 원격 브랜치 나 master 브랜치로 현재 브랜치를 업데이트 할 것인가? 변경 사항과 함께? – Rachel

+0

제 대답은 사실 약간 잘못되었습니다. :) 나는 그것을 업데이트했습니다. 귀하의 질문에 대한 답변은 두 경우 모두 현재 분기에 병합된다는 것입니다. 현재 브랜치와의 병합을 피하려면'git fetch'와 별도로'git merge'가 필요합니다. –

+3

@calmh :'git merge' (그러므로'git pull')는 항상 현재 가지로 병합됩니다. 현재 브랜치 이외의 다른 브랜치와 병합하려면 먼저 브랜치를 체크 아웃하십시오. – Cascabel

관련 문제