it-swarm-ko.tech

원격 Git 브랜치를 체크 아웃하려면 어떻게해야합니까?

누군가 공유 저장소에 git Push Origin testtest이라는 브랜치를 밀어 넣었습니다. git branch -r로 지점을 볼 수 있습니다.

이제 원격 test 분기를 확인하려고합니다.

난 노력 했어:

  • 아무 것도하지 않는 git checkout test

  • git checkout Origin/test* (no branch)을 제공합니다. 어느 것이 혼란 스럽습니까? 나는 "가지가 없어"어떻게있을 수 있습니까?

원격 Git 브랜치를 체크 아웃하려면 어떻게해야합니까?

6088
Juri Glass

최신 정보

야 쿠브의 대답은 실제로 이것을 향상시킵니다. Git 버전이 1.6.6 이상인 리모콘 하나만 있으면 다음과 같이 할 수 있습니다.

git fetch
git checkout test

Masukomi 사용자가 주석에서 지적했듯이 원격 코드가 여러 개인 경우 git checkout test는 현대의 git에서는 작동하지 않습니다. 이 경우에는

git checkout -b test <name of remote>/test

또는 속기

git checkout -t <name of remote>/test

이전 답변

원격 브랜치에서 로컬로 작업을 시작하기 전에 아래 답변에서 호출 한대로 가져와야합니다.

분기를 가져 오려면 다음을 수행하면됩니다.

git fetch Origin

이렇게하면 원격 지점을 모두 가져올 수 있습니다. 체크 아웃 할 수있는 지점은 다음과 같습니다.

git branch -v -a

원격 브랜치를 가지고 있으면, 이제는 관심있는 브랜치를 체크 아웃하여 로컬 작업 카피를 제공해야한다.

git checkout -b test Origin/test
8411
hallski

Sidenote : 근대 망할 놈 (> = 1.6.6 )을 사용하면,

git checkout test

(magic DWIM - mery를 수행하고 당신을 위해 로컬 브랜치 'test'를 생성하기 위해 'origin/test'가 아니라 'test'가 아니라 'test'라는 것을 주목하라. '.


git branch 출력에서 ​​* (no branch)은 "분리 HEAD"상태 (커밋 할 HEAD 지점을 직접 가리키며 일부 로컬 분기에 대한 기호 참조가 아님)에서 이름없는 분기에 있음을 의미합니다. 이 이름없는 브랜치에 대해 커밋을했다면, 항상 현재 커밋에서 로컬 브랜치를 만들 수 있습니다 :

git checkout -b test HEAD
1190
Jakub Narębski

이 경우 원격 test 분기를 추적하는 로컬 test 분기를 만들려고합니다.

$ git branch test Origin/test

이전 버전의 git에서는 명시적인 --track 옵션이 필요했지만 원격 분기에서 분기 할 때는 기본값이되었습니다.

528
ndim

수락 답변 당신을 위해 일하지 않습니까?

처음이자 선택된 대답은 기술적으로 correct 이지만 원격 저장소에서 모든 개체와 참조를 아직 가져 오지 않았을 가능성이 있습니다. 이 경우 다음 오류가 표시됩니다.

$ git checkout -b remote_branch Origin/remote_branch

치명적 : git checkout : 경로를 업데이트하는 것이 분기를 변경하는 것과 호환되지 않습니다.
커밋으로 해결할 수없는 'Origin/remote_branch'를 체크 아웃 하시겠습니까?

해결책

이 메시지가 나타나면 먼저 git fetch Origin를 수행해야합니다. 여기서 Origin은 원격 저장소의 이름이며 git checkout remote_branch를 실행합니다. 다음은 응답에 대한 전체 예제입니다.

$ git fetch Origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> Origin/develop
 * [new branch]      demo       -> Origin/demo
   d80f8d7..359eab0  master     -> Origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from Origin.
Switched to a new branch 'demo'

보시다시피 git fetch Origin를 실행하면 아직 로컬 시스템에서 추적하도록 설정하지 않은 원격 브랜치가 검색되었습니다. 거기에서 우리는 이제 원격 지점에 대한 참조를 가지므로 간단하게 git checkout remote_branch를 실행할 수 있으며 원격 추적의 이점을 얻을 수 있습니다.

439
Corey Ballou

위의 해결책을 시도했지만 작동하지 않았습니다. 시도해보십시오. 작동합니다.

git fetch Origin 'remote_branch':'local_branch_name'

그러면 원격 브랜치를 가져오고 이름이 local_branch_name 인 새 로컬 브랜치 (아직없는 경우)를 만들고 원격 브랜치를 추적합니다.

226
Sahil kalra

이것은 원격 이름이없는 Origin ( documentation )에 대한 DWIM 입니다.

$ git checkout -t remote_name/remote_branch

새 리모컨을 추가하려면 먼저 다음을 수행해야합니다.

$ git remote add remote_name location_of_remote
$ git fetch remote_name

첫 번째 명령은 리모트가 존재 함을 알려주고, 두 번째 명령은 커밋을 얻는다.

105
tacaswell

용도:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

내 대답은 현대의 망할 놈의 양성의 경우에는 작동하지 않습니다. 원격 브랜치가 새 것이면 먼저 잡아 당겨야 할 수도 있지만이 경우는 확인하지 않았습니다.

100
matanster

OK대답은 쉽습니다 ... 기본적으로 지점을 볼 수 있지만 아직 로컬 사본이 없습니다! ...

지점을 fetch해야합니다 ...

다음과 같이 한 줄 명령을 사용하여 분기를 가져 와서 체크 아웃 할 수 있습니다.

git fetch && git checkout test

차이점을 공유하기 위해 아래 이미지를 만들었습니다. fetch이 어떻게 작동하는지 pull과 어떻게 다른지 살펴보십시오.

 git fetch

78
Alireza

Git 저장소를 복제하려면 다음을 수행하십시오.

git clone <either ssh url /http url>

위의 명령은 모든 분기를 체크 아웃하지만 master 분기 만 초기화됩니다. 다른 지점을 체크 아웃하려면 다음을 수행하십시오.

git checkout -t Origin/future_branch (for example)

이 명령은 원격 분기를 체크 아웃하고 로컬 분기 이름은 원격 분기와 동일합니다.

체크 아웃 할 때 로컬 지점 이름을 무시하려면 다음을 수행하십시오.

git checkout -t -b enhancement Origin/future_branch

이제 로컬 분기 이름은 enhancement이지만 원격 분기 이름은 future_branch입니다.

설명서

52
Madhan Ayyasamy

당신은 시도 할 수 있습니다

git fetch remote
git checkout --track -b local_branch_name Origin/branch_name

또는

git fetch
git checkout -b local_branch_name Origin/branch_name
34
uma

먼저, 다음을 수행해야합니다.

git fetch # 분기 이름을 모른다면

git fetch Origin branch_name

둘째, 다음을 통해 로컬로 원격 지점을 체크 아웃 할 수 있습니다.

git checkout -b branch_name Origin/branch_name

-b는 선택한 원격 지점에서 지정된 이름으로 새 분기를 만듭니다.

28
Silent Spectator

명령들

git fetch --all
git checkout -b <ur_new_local_branch_name> Origin/<Remote_Branch_Name>

~와 같다

 git fetch --all

그리고

 git checkout -b fixes_for_dev Origin/development

둘 다 development에서 latest fixes_for_dev를 만듭니다.

27
sreekumar

다음 명령을 사용합니다.

git checkout --track Origin/other_remote_branch
25
priyankvex

분기가 Origin 리모컨이 아닌 다른 항목에 있으면 다음을 수행합니다.

$ git fetch
$ git checkout -b second/next upstream/next

이렇게하면 next 원격의 upstream 분기가 second/next라는 로컬 분기로 체크 아웃됩니다. 즉, 이미 다음 번에 충돌 한 로컬 브랜치가있는 경우입니다.

$ git branch -a
* second/next
  remotes/Origin/next
  remotes/upstream/next
23
Kris

git branch -r는 해당 지사 이름이 Git의 로컬 지사 목록에 없기 때문에 오브젝트 이름이 유효하지 않다고 말합니다. Origin에서 로컬 브랜치 목록을 다음과 같이 업데이트하십시오 :

git remote update

그런 다음 원격 지점을 다시 체크 아웃하십시오.

이것은 나를 위해 일했습니다.

나는 git fetch가 원래의 포스터가 원했던 것이 아닌 all remote 브랜치를 사용한다고 믿습니다.

16
webdevguy

이 답 중 어느 것도 나를 위해 일하지 못했습니다. 이 일 :

git checkout -b feature/branch remotes/Origin/feature/branch

15
brianyang

git fetch && git checkout your-branch-name

15

단순히 원격 브랜치의 이름으로 git checkout를 실행하십시오. 자식은 자동으로 생성한다 원격 브랜치를 추적하는 로컬 브랜치 :

git fetch
git checkout test

그러나, 만약 그 브랜치 이름이 하나 이상의 리모트에서 발견된다면, Git은 어떤 것을 사용할 지 모르기 때문에 이것은 작동하지 않을 것입니다. 이 경우 다음 중 하나를 사용할 수 있습니다.

git checkout --track Origin/test

또는

git checkout -b test Origin/test

2.19 에서 Git은 checkout.defaultRemote configuration을 배웠다. 이러한 모호성을 해결할 때 리모컨을 기본값으로 지정한다.

13
Eugene Yarmash

위의 모든 제안에 대해 error: pathspec 'desired-branch' did not match any file(s) known to git.을 보면서 상황이 고생했습니다. 나는 1.8.3.1 버전이다.

그래서이 나를 위해 일했다 :

git fetch Origin desired-branch
git checkout -b desired-branch FETCH_HEAD

뒤에있는 설명은 필자가 원격 분기를 가져올 때 FETCH_HEAD로 가져온 것을 알게되었습니다.

$ git fetch Origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD
13
alisa

git remote show <Origin name> 명령은 모든 분기 (추적되지 않은 분기 포함)를 나열합니다. 그런 다음 가져와야하는 원격 분기 이름을 찾을 수 있습니다.

예:

$ git remote show Origin

원격 분기를 가져 오려면 다음 단계를 사용하십시오.

git fetch <Origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)

예:

$ git fetch Origin test:test
$ git checkout test
10
Thushan

다른 사람들과 친구들이 해결책을 제시하지만 어쩌면 그 이유를 말할 수 있습니다.

아무것도하지 않는 git checkout 테스트

Does nothingdoesn't work와 같지 않으므로 터미널에 'git checkout test'를 입력하고 Enter 키를 누르면 메시지가 나타나지 않고 오류가 발생하지 않습니다. 내가 맞습니까?

대답이 '예'인 경우 원인을 알려줄 수 있습니다.

그 이유는 작업 트리에 'test'라는 파일 (또는 폴더)이 있기 때문입니다.

git checkout xxx가 구문 분석 될 때,

  1. Git은 처음에는 브랜치 이름으로 xxx을 찾았지만 test라는 브랜치는 없다.
  2. 그러면 Git은 xxx이 경로라고 생각하고 다행스럽게도 (또는 불행히도) test라는 파일이 있습니다. 그래서 git checkout xxxxxx 파일의 수정을 버리는 것을 의미합니다.
  3. xxx이라는 파일이 없으면 Git은 몇 가지 규칙에 따라 xxx을 만들려고 시도합니다. 규칙 중 하나는 remotes/Origin/xxx이 있으면 xxx이라는 분기를 만드는 것입니다.
8
oldman

새로 생성 된 브랜치를 얻으려면

git fetch

다른 브랜치로 전환하려면

git checkout BranchName
7
Hasib Kamal

다음의 Bash 스크립트로 모든 원격 브랜치를 추적 할 수 있습니다 :

#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/Origin\///'`
  do git branch -f --track "$branch" "Origin/$branch"
done

다음은 단일 행 버전입니다.

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/Origin\///'`; do git branch --track "$branch" "Origin/$branch" ; done ;
6
OzzyCzech

리모트에서 가져오고 브랜치를 체크 아웃하십시오.

git fetch <remote_name> && git checkout <branch_name> 

예 :

git fetch Origin & git checkout 기능/XYZ-1234-Add-Alerts

6
Pranav

fetch을 (를) 사용하여 모든 리모컨을 당기십시오

   git fetch --all

원격 브랜치를 나열하려면 :

   git branch -r

모든 지점을 나열하려면

   git branch -l
   >>outpots like-
     * develop
       test
       master

지점을 체크 아웃/변경하려면

   git checkout master
2
Nasir Khan

원격 지사 이름이 특수 문자로 시작하는 경우 checkout 명령에서 작은 따옴표를 사용해야합니다. 그렇지 않으면 git는 어떤 지사인지 알 수 없습니다.

예를 들어 #9773라는 원격 분기를 체크 아웃하려했지만 아래 그림과 같이 명령이 제대로 작동하지 않았습니다.

 enter image description here

어떤 이유로 뾰족한 기호 (#)가 그와 관련이있을 수 있는지 궁금해하고, '#9773'보다 #9773 같은 작은 따옴표로 분기 이름을 둘러 보았습니다. 제대로 작동했습니다.

$ git checkout -b '#9773' Origin/'#9773'
1
Ulysses Alves

빈 폴더를 만들려면 명령을 따르십시오. 그것을 입력하고 다음 명령을 사용하십시오 :

saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from Origin.
Switched to a new branch '1_4_0_content_discovery'
1
Mehedi Hasan