자식을 사용하여 특정 분기를 가져옵니다


19

Xilinx wiki에 설명 된대로 git을 사용하여 마스터 다음 지점 에서 소스 코드를 다운로드하고 싶습니다 .

나는 이것을 시도했다 :

#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git

Initialized empty Git repository in /home/Hannan/master-next/.git/
fatal: remote error:
Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name
Email support@github.com for help

이조 차도 실패했습니다.

# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git
Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/
fatal: remote error:
Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name
Email support@github.com for help

작동하는 명령은 다음과 같습니다.

 git clone git://github.com/Xilinx/u-boot-xlnx.git

그러나 이것이 마스터 분기가 아닌 마스터 다음 분기를 실제로 가져올 것이라는 것을 어떻게 알 수 있습니까? git을 사용하여 특정 브랜치를 올바르게 가져 오는 방법은 무엇입니까?

PuTTY를 통해 액세스 한 RHEL 6을 사용하고 있습니다.

답변:


16

오류 메시지에서 알 수 git clone있듯이 git 저장소가 필요합니다. 그런 경로에서 분기 이름을 "추가"할 수 없습니다. git의 분기를 참조하십시오 .

단일 브랜치를 복제 할 수 있습니다 (그리고 그 역사) : git clone <url> --branch <branch> --single-branch

참조하십시오 git help clone.

그러나 당신이 실행 한 clone 명령은 당신에게 전체 저장소의 사본을했다, 당신은 기존의 지사 볼 수 git branch와 그들에 대해 더 많은 정보를 git show-branch.

로 원하는 지점으로 전환하십시오 git checkout branch-name.

Pro Git 책 의 첫 번째 장 (온라인에서 사용 가능)은 기본 명령에 대한 자세한 내용을 제공합니다.


"복제 명령을 실행하면 전체 저장소의 복사본이 제공됩니다."전체 저장소는 두 분기가 병합되었음을 의미합니까?
user2799508

아니 병합되지 않습니다. git의 브랜치 는 here 설명 된 것처럼 전체 디렉토리의 사본이 아닙니다 .
Leiaz

내가 한 것은 "git clone -b master-next github.com/Xilinx/u-boot-xlnx.git "이 맞지 않습니까?
user2799508

더 이상 복제 할 필요가 없었습니다. 귀하의 질문에 표시된 명령은 모든 지점이있는 저장소를 제공했습니다. 그러나 이것도 맞습니다. git checkout master-next복제 후 수행하는 것과 같습니다 .
Leiaz

13

이 명령은 작동해야합니다.

$ git fetch origin [branch]

위의 명령은 원격 저장소에서 메타 데이터 만 가져오고 소스를 병합하지 않습니다.

소스를 가져오고 병합하려는 경우 명령은 다음과 같습니다.

$ git pull origin [branch]

merge 명령을 실행하는 분기에주의하십시오. 소스가 병합되는 위치입니다.


귀하의 답변은 기술적으로 정확하지만 문법 검사 / 재 작성의 이점이 있다고 생각합니다.
Sami Laine

이것은 잘 작동합니다
nwgat

4

자식 리포지토리에는 모든 브랜치가 포함되어 있습니다 (그러나 압축되어 차이가 있으므로 크기 문제는 거의 없습니다).

따라서 성공적으로 완료 한 전체 프로젝트를 복제 할 수 있습니다. 이것은 하나의 지점에만 관심이있는 경우에도 저장소를 얻는 표준 방법입니다.

그런 다음 .git 구조에는 해당 저장소에서 수행 된 모든 분기가 포함됩니다 .

특정 브랜치를 사용하려면 git checkout [branch_name] 브랜치가 존재하면 파일을 로컬에서 사용할 수있게됩니다 (프로젝트 디렉토리의 현재 파일과 마찬가지로).

git status 그런 다음 현재 분기 인 분기를 표시합니다. 예를 들면 다음과 같습니다.

Leiaz에 따르면 특정 분기를 복제 할 수 있습니다. 실제로 나는 이것을 한 적이 없거나 다른 사람들이 그것을 사용하는 것을 보았습니다. 더 많은 연구에서, 그것은 git 1.7.10 (2012 년 4 월)에 추가 된 비교적 새로운 것입니다 : 복제를 단일 지점으로 제한하는 'git clone learn --single-branch'옵션 (서프라이즈!); 분기 히스토리를 가리 키지 않는 태그는 페치되지 않습니다. 예를 들면 다음과 같습니다.

git clone -b master-next --single-branch git://github.com/Xilinx/

여기에 이미지 설명을 입력하십시오 내 "링커"응용 프로그램에 대해 지점을 확인하고 있습니다. v3.0.10


1
나는 결코 그것을 한 적이 없다. 나는 옵션을 본 것을 기억했다. 여분의 가지가 크기가 "저렴"하기 때문에 거의 사용되지 않는 것 같습니다.
Leiaz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.