자식으로 분기를 다운로드하는 방법은 무엇입니까?


214

GitHub에서 호스팅되는 프로젝트가 있습니다. 한 컴퓨터에 지점을 만든 다음 변경 사항을 GitHub로 푸시했습니다.

git push origin branch-name

이제 다른 컴퓨터에 있고 해당 지점을 다운로드하고 싶습니다. 그래서 나는 시도했다 :

git pull origin branch-name

...하지만이 모든 것은 내 새 지점의 변경 사항으로 마스터 지점을 덮어 쓰는 것입니다.

기존 분기를 덮어 쓰지 않고 원격 분기를 올바르게 가져 오려면 어떻게해야합니까?

답변:


375

A와 감사 관련 질문은 , 내가 "체크 아웃"새 로컬 지사와 원격 지사에 필요하고 새 로컬 브랜치 이름을 지정하는 것을 알아 냈다.

git checkout -b newlocalbranchname origin/branch-name

아니면 할 수 있습니다 :

git checkout -t origin/branch-name

후자는 원격 지점을 추적하도록 설정된 지점을 만듭니다.


업데이트 : 원래이 질문을 게시 한 지 5 년이 지났습니다. 나는 많은 것을 배웠고 그 이후로 자식이 향상되었습니다. 나의 일반적인 워크 플로우는 지금 조금 다릅니다.

원격 브랜치를 가져 오려면 간단히 다음을 실행하십시오.

git pull

이것은 모든 원격 브랜치를 가져오고 현재 브랜치를 병합합니다. 다음과 같은 출력이 표시됩니다.

From github.com:andrewhavens/example-project
   dbd07ad..4316d29  master     -> origin/master
 * [new branch]      production -> origin/production
 * [new branch]      my-bugfix-branch -> origin/my-bugfix-branch
First, rewinding head to replay your work on top of it...
Fast-forwarded master to 4316d296c55ac2e13992a22161fc327944bcf5b8.

이제 자식은 내 새로운 것을 알고 my-bugfix-branch있습니다. 이 지점으로 전환하려면 간단히 다음을 실행하십시오.

git checkout my-bugfix-branch

일반적으로 체크 아웃하기 전에 브랜치를 생성해야하지만 최신 버전의 git에서는 이 원격 브랜치의 로컬 사본 을 체크 아웃 하려는 것을 알만큼 똑똑 합니다.


나는 GIT 1.7.2.5를 사용하고 있으며 나를 위해 일한 명령은 다음과 같습니다 git branch --track XX origin/XX. 너의 명령은 나에게 오류를 준다.
dimitarvp

8
모든 원격 브랜치를 다운로드하지 않은 경우 실패 할 수 있습니다. 풀다운하려면 "git remote update"를 수행하십시오.
벤 Walding

1
실제로는 "git checkout branch-name"보다 짧을 수 있습니다. branch-name이 원격 추적 브랜치와 동일한 경우 (예 : origin / branch-name) 자동으로 로컬 추적 브랜치입니다.
DavidN

64

나와 같은 Git 초보자에게는 원격 저장소를 다운로드하고 보려는 지점으로 전환하기 위해 수행 할 수있는 몇 가지 단계가 있습니다. 그들은 아마도 Git을 어떤 식 으로든 학대 할 수 있지만 그것은 나를 위해 일했습니다! :-)

코드를 다운로드하려는 저장소를 복제하십시오 (이 예제 에서는 Github 에서 LRResty 프로젝트 를 선택했습니다 ).

$ git clone https://github.com/lukeredpath/LRResty.git
$ cd LRResty

이 시점에서 사용중인 지점을 확인하십시오 (마스터 지점이어야 함).

$ git branch    
* master

원하는 지점을 확인하십시오. 제 경우에는 'arcified'입니다.

 $ git checkout -b arcified origin/arcified
 Branch arcified set up to track remote branch arcified from origin.
 Switched to a new branch 'arcified'

원하는 지점을 사용하고 있는지 확인하십시오.

$ git branch    
* arcified
  master

나중에 코드를 다시 업데이트하려면 다음을 실행하십시오 git pull.

$ git pull
Already up-to-date.

"그들은 아마 Git을 어떤 식 으로든 남용 할 것입니다"-아니, 이것은 정확히 맞습니다.
Big McLargeHuge

28

git remote를 다음과 같이 사용할 수 있습니다 :

git fetch origin

다음과 같이 로컬 브랜치를 설정하여 원격 브랜치를 추적하십시오.

git branch --track [local-branch-name] origin/remote-branch-name

이제 local-branch-name에 원격 github 분기의 내용이 있습니다.

해당 local-branch-name으로 전환하고 작업을 시작할 수 있습니다.

git checkout [local-branch-name]

18

당신이 사용할 수있는 :

git clone <url> --branch <branch>

분기의 내용 만 복제 / 다운로드합니다.

내 브랜치의 내용이 마스터 브랜치와 완전히 다르기 때문에 이것은 특히 나에게 도움이되었습니다 (일반적으로 그렇지는 않지만). 따라서 위의 다른 사람들이 제시 한 제안은 도움이되지 않았으며 지점을 체크 아웃하고 git pull을 수행 한 후에도 마스터 사본을 얻었습니다.

이 명령은 지점의 내용을 직접 제공합니다. 그것은 나를 위해 일했다.


1
이것이 가장 좋은 대답입니다. 간단하고 효과적입니다.
derek

2
이것은 나를 위해 작동하지 않는 것 같습니다. 그것은 이미 그 이름을 가진 폴더가 있다고 말합니다 (물론 존재합니다)
Jonathan Tuzman

1
@Jonathan 기존 분기에 새 분기를 추가하지 않습니다. 새 사본을 복제하는 데만 사용할 수 있습니다. 저장소를 이미 복제하지 않은 경우 왜 해당 이름의 폴더가 있어야하는지 알 수 없습니다. 다른 위치에서 복제하십시오.
Old Markus

새로운 지점으로 기존 프로젝트를 업데이트하지 않음
Dazzle

16

git bash의 git에서 다운로드하려는 새 컴퓨터의 폴더로 이동하십시오.

아래 명령을 사용하여 원하는 지점에서 코드를 다운로드하십시오

git clone 'git ssh url' -b 'Branch Name'

해당 분기 코드를 다운로드합니다.


9

복제본 이름으로 Git clone 및 cd :

$ git clone https://github.com/PabloEzequiel/iOS-AppleWach.git
Cloning into 'iOS-AppleWach'...
$ cd iOS-AppleWach

원하는 지점 (GitHub 페이지)으로 전환하십시오.

$ git checkout -b gh-pages origin/gh-pages
Branch gh-pages set up to track remote branch gh-pages from origin.
Switched to a new branch 'gh-pages'

그리고 가지를 당기십시오.

$ git pull
Already up-to-date.

LS :

$ ls
index.html      params.json     stylesheets

0

자식 체크 아웃 -b 지점 / 이름

git pull origin 브랜치 / 이름


0

당신은 시도 할 수 있습니다

git fetch <remoteName> <branchName>

예 :

git fetch origin MyRemoteBranch

-8

새 디렉토리를 작성하고 대신 복제를 수행하십시오.

자식 클론 (원산지 주소) (지점 이름)


3
Git 에서는 브랜치 만 복제 할 수 없습니다 . 전체 저장소 복제본 만 수행 할 수 있습니다.
Alan Haggai Alavi 2019
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.