2014-04-08 5 views
2

나는 이점을 이해하지 못한다. this article과 같은 곳에서 가져 오기 대신 가져 오기를 사용하면 로컬 브랜치에 병합하기 전에 변경 사항을 검사 할 수있는 기회가 주어집니다.git 가져 오기의 핵심은 무엇입니까?

그러나이 기사에서 저자는 git diff master origin/master을 사용하여 새로 가져온 분기를 로컬 마스터와 비교하여 변경 사항을 검사합니다.

이것은 내가 혼란스러워하는 곳입니다. 당신이 먼저 가져 왔는지 여부에 관계없이 그 명령은 어쨌든 작동 할 것입니다. 어느 쪽이든 그것은 로컬 마스터를 원격 마스터와 비교합니다. 로컬 브랜치를 원격 브랜치와 비교하기 위해 가져올 필요가 없습니다.

무엇이 누락 되었습니까?

답변

6

git fetch은의 로컬 복사본을 으로 업데이트하는 데 사용됩니다.

그래서 당신이 언급 한 명령은 지역 지점 master로컬 복사본 origin/master, 기원에 master 지점이 아닌 실제 상태 사이 diff 할 것입니다. fetch은 원격 서버에 연결하여 원격의 모든 변경 사항 (지점, 태그 등)을 다운로드합니다.

언제나 그렇듯이 git manual on Branching and Remote Branches은 잘 설명합니다.

+0

우와. 그걸 몰랐어. 진짜야? 가져 오지 않으면 원격 지점과 비교할 방법이 없습니다. 원격 브랜치의 "로컬 버전"을 가지고 있어야합니까? – Aerovistae

+0

git는 분산 CVS이기 때문에 로컬 git 저장소는 로컬 브랜치 (기본적으로'master')를 갖습니다. 그러나 하나 이상의 원격 서버로 작업하는 경우 git은 이러한 서버 상태의 로컬 복사본을 만듭니다. 그들은 당신의 지방 지부 중 일부 또는 다른 지사를 가질 수 있습니다. 나는 원격 저장소에 대해 diff를 직접 만들 수있는 방법을 모른다. (최소한 git 자체에서는 그렇지 않다.) – achedeuzot

+2

원격 저장소와의 차이점을 확인하려면 해당 저장소의 상태를 다운로드해야합니다. 네트워크 작업이 느려질 수 있습니다. 매우 느리다. diff를 실행할 때마다 네트워크 작업의 패널티가 발생하지 않도록하기 위해서, git은 명시 적으로 요청할 때만 다운로드를 수행한다. 그것은'자식 가져 오기'가하는 일입니다. –

-4

fetch은 하위 레벨 명령입니다. 예를 들어, pull이 구현되었습니다. 대부분의 경우에 직접 사용하면 많은 장점을 얻지 못할 것입니다.

+0

본인은이 성명서에 동의하지 않습니다. 'git fetch'는 매우 유용합니다 (자세한 내용은 인정 된 답변을 참조하십시오). 나는 모든 경우에'git pull '대신에'git diff'와'git merge'와 함께 사용하는 것이 좋습니다. – Chris

+0

또한'fetch'는'pull'보다 'lower-level'이라는 것에 동의하지 않을 것입니다. Git에는 두 가지 "명령 레벨"이 있습니다. (http://stackoverflow.com/questions/6976473/what-does-the-term-porcelain-mean-in-git),'fetch'와'pull' "도자기"가 아니라 "배관공"입니다. – Chris

관련 문제