2012-12-29 2 views
5

경로 /path/to/repo에서 자식 저장소를 복제한다고 가정합니다. 원본 저장소는 "원본"이라는 원격 저장소가됩니다. git fetch origin 명령으로 원본에서 개체를 가져올 수 있습니다. 이것은 만들어진 모든 브랜치를 포함하여 원격 "원점"에서 모든 객체를 검색합니다.Git : 명명 된 리모콘에서 가져 오는 것과 URL에서 가져 오는 것의 차이점은 무엇입니까?

궁금한 점은 git fetch /path/to/repo 명령을 사용하여 동일한 저장소에서 명시 적으로 패치를 가져 오면 모든 커밋 오브젝트를 검색하지만 분기는 검색하지 않는 것 같습니다.

왜 그럴까요? 두 경우 모두 똑같은 일을하지 않습니까? Git의 동작이 어떻게 다릅니 까? 원격 자신의 구성을 사용 명명 된

+0

한 ** 오히려 * 가져 오는 것보다, URL에서 ** 끌어 * : URL을 사용하는 대신 git remote add를 통해 원격 설정

일회성에 사용되는 즉 당긴다 URL에서. –

답변

5

어디 설정이 원격 가져올 수있는 refspec 스키마 :

[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = /path/to/repo 

그래서,이 두 형식은 동일합니다 기본적으로

git fetch origin 
git fetch /path/to/repo +refs/heads/*:refs/remotes/origin/* 

: git fetch <path> <source>:<destination>. 목적지는 원격 HEAD와 분기 포인터가 저장되는 곳이기 때문에 여기에서 중요합니다.

git fetch /path/to/repo을 수행하면 refspec을 설정하지 않습니다. 따라서 git에는 가져 오기 및 저장 명령이 없으므로 개체가 아닌 커밋 만 가져옵니다.

여기에 잘못된 세부 사항이나 명명 규칙이있을 수 있습니다. 언제든지 편집 해주십시오. 그러나 글로벌 아이디어는 정확해야

+0

참고 : 원격 추적 분기를 설정하지 않지만 'FETCH_HEAD'를 설정합니다. 그냥 참고하시기 바랍니다. –

2

큰 차이 인 URL에서 가져 오는 것은 원격 추적 지점에 원격 저장소에있는 지점의 상태를 저장하지 않습니다 (예를 들어 refs/heads/masterrefs/remotes/origin/master에 원격 origin에서 master 지점 일명 origin/master를) 단 FETCH_HEAD에만 있습니다.

보통
$ git pull <URL> <branch or tag> 
관련 문제