질문자 :David
제 동료와 저는 같은 저장소에서 작업하고 있습니다. 우리는 기술적으로 서로 다른 프로젝트를 위해 각각의 분기를 두 개의 분기로 나누었지만 유사점이 있으므로 branch
에서 master
에게 다시 커밋하고 싶을 때가 있습니다.
그러나 나는 branch
있습니다. 내 동료가 해당 분기를 구체적으로 어떻게 가져올 수 있습니까?
저장소의 git clone
은 그를 위해 로컬로 분기를 생성하지 않는 것 같지만, 내 쪽에서 푸시한 후 언퍼들에서 라이브로 볼 수 있습니다.
또한 처음에 브랜치를 만들 때 -b checkout
. 그게 큰 차이가 있습니까?
$ git branch -r origin/HEAD -> origin/master origin/daves_branch origin/discover origin/master $ git fetch origin discover $ git checkout discover
제가 실행한 명령어들입니다. 그러나 확실히 작동하지 않습니다.
해당 분기를 체크아웃한 다음 다양한 공동 작업자 또는 워크스테이션의 분기 변경 사항만 푸시하고 다시 커밋할 수 있기를 원합니다 .
업데이트: Git 스위치 사용
아래에 작성된 모든 정보는 정확했지만 git switch
가 추가되었습니다.
daves_branch
가 원격 리포지토리에 있지만 로컬 브랜치에는 없는 경우 다음을 입력하기만 하면 됩니다.
git switch daves_branch
로컬에 분기가 없기 때문에 원격 저장소에서 switch
그런 다음 자동으로 원격 분기 추적을 설정합니다.
경우주의 daves_branch
로컬에 존재하지 않는 당신이해야합니다 git fetch
사용하기 전에 먼저 switch
.
원본 게시물
원격 분기를 추적하는 로컬 분기를 생성해야 합니다. 다음 명령은 daves_branch 라는 로컬 브랜치를 생성하고 원격 브랜치 origin/daves_branch 를 추적합니다. 변경 사항을 푸시하면 원격 분기가 업데이트됩니다.
최신 버전의 Git:
git checkout --track origin/daves_branch
--track
git checkout -b [branch] [remotename]/[branch]
줄임말입니다. 여기서 [remotename]은 이 경우 원점 이고 [branch]는 두 번 동일합니다(이 경우 daves_branch).
Git 1.5.6.5의 경우 다음이 필요했습니다.
git checkout --track -b daves_branch origin/daves_branch
Git 1.7.2.3 이상의 경우 이것으로 충분합니다(더 일찍 시작되었을 수도 있지만 이것이 내가 빨리 찾을 수 있는 가장 빠른 확인입니다).
git checkout daves_branch
최신 Git 버전에서 이 명령은 로컬 분기를 생성하지 않으며 '분리된 HEAD' 상태가 됩니다. 로컬 브랜치를 원하면 --track
옵션을 사용하십시오.
자세한 내용은 다음과 같습니다. 3.5 Git 분기 - 원격 분기, 분기 추적
ralphtheninja나는 fetch
와checkout
...
git fetch <remote> <rbranch>:<lbranch> git checkout <lbranch>
...여기서 <rbranch>
는 원격 분기 또는 소스 참조 이고 <lbranch>
는 추적하려는 아직 존재하지 않는 로컬 분기 또는 대상 참조 이며 원격 분기 또는 소스 참조와 동일한 이름을 지정할 수 있습니다. . <refspec>
설명의옵션 아래에 설명되어 있습니다.
Git은 너무 똑똑해서 원격 분기의 처음 몇 글자 뒤에 탭 하면 첫 번째 명령이 자동으로 완성됩니다. 즉, 로컬 브랜치의 이름을 지정할 필요도 없습니다. Git은 자동으로 원격 브랜치의 이름을 복사해 줍니다. 감사합니다 힘내!
또한 이 유사한 스택 오버플로 게시물의 답변에서 볼 수 fetch
에서 로컬 분기의 이름을 지정하지 않으면 -b
플래그를 사용하여 체크아웃할 때 여전히 생성할 수 있습니다. 즉, git fetch <remote> <branch>
다음에 git checkout -b <branch> <remote>/<branch>
가 내 초기 답변과 정확히 동일합니다. 그리고 분명히 저장소에 리모컨 이 하나만 있는 fetch
후에 git checkout <branch>
를 수행하면 로컬 분기가 생성됩니다. 예를 들어, 방금 리포지토리를 복제하고 원격에서 추가 분기를 확인하려고 합니다.
fetch
에 대한 문서 중 일부가 pull
에서 그대로 복사되었을 수 있다고 생각합니다. 특히 옵션의 <refspec>
섹션은 동일합니다. fetch
가 merge
될 것이라고 믿지 않습니다. 그래서 콜론의 목적지 쪽을 비워두면 fetch
는 아무 일도 하지 않을 것 입니다.
참고 : git fetch <remote> <refspec>
IS 짧게 git fetch <remote> <refspec>:
때문에 아무것도 할 것이지만, 이는 git fetch <remote> <tag>
과 동일 git fetch <remote> <tag>:<tag>
리모트 카피한다 <tag>
로컬.
원격 분기를 로컬로 복사하려는 경우에만 유용하지만 반드시 즉시 확인해야 하는 것은 아닙니다. 그렇지 않으면 이제 결제 설명 의 첫 번째 섹션과 나중에 --track 설명 아래의 옵션 섹션에서 자세히 설명되는 허용된 답변을 --track
이기 때문입니다. 음 ... 일종의 한 라이너, 당신은 여전히 실행해야하기 때문에 git fetch <remote>
첫째.
<refspecs>
(source:destination)의 순서는 원격 분기 를 삭제하는 기괴한 사전 Git 1.7 방법을 설명합니다. 즉, 대상 refspec에 아무 것도 푸시하지 마십시오.
Mark Mikofski새로운 원격 브랜치(리모컨에만 존재하지만 로컬에는 존재하지 않음)를 "체크아웃"하려는 경우 다음이 필요합니다.
git fetch origin git checkout --track origin/<remote_branch_name>
이것은 origin 에서 가져오기를 원한다고 가정합니다. 그렇지 않은 경우 origin 을 원격 이름으로 바꾸십시오.
paneer_tikka로컬이 아닌 원격으로 존재하는 myBranch를 체크아웃하려면 다음을 수행하십시오.
git fetch --all git checkout myBranch
이 메시지가 나타납니다.
Branch myBranch set up to track remote branch myBranch from origin Switched to a new branch 'myBranch'
David적어도 나를 위해 그것을하는 가장 쉬운 방법 :
git fetch origin <branchName> # Will fetch the branch locally git checkout <branchName> # To move to that branch
James Rochabrungit branch -a
(로컬 및 원격 분기 모두) 또는 git branch -r
(원격 분기만)을 사용하여 모든 원격 및 해당 분기를 봅니다. 그런 다음 git checkout -t remotes/repo/branch
원격으로 수행하고 로컬 분기를 만들 수 있습니다.
또한 해당 원격에 대한 모든 참조 및 태그를 볼 수 있는 git-ls-remote 명령이 있습니다.
Daniel Lee제목과 질문이 혼동됩니다.
- Git fetch 원격 브랜치
- 내 동료가 그 지점을 구체적으로 어떻게 가져올 수 있습니까?
질문이 있다면 원격 브랜치를 어떻게 작업할 수 있습니까? 또는 Git은 원격 브랜치를 어떻게 체크아웃할 수 있습니까? , 더 간단한 솔루션은 다음과 같습니다.
Git(>= 1.6.6)을 사용하면 다음을 사용할 수 있습니다.
git checkout <branch_name>
로컬 <branch_name>
찾을 수 없지만 일치하는 이름을 가진 정확히 하나의 리모컨에 추적 분기가 있는 경우 다음과 동일하게 처리합니다.
git checkout -b <branch_name> --track <remote>/<branch_name>
Git 체크아웃에 대한 문서 참조
친구를 위해:
$ git checkout discover Branch discover set up to track remote branch discover Switched to a new branch 'discover'
Guillaume Vincent원격에 존재하는 분기를 가져오는 가장 간단한 방법은 다음과 같습니다.
git fetch origin branchName git checkout branchName
다음을 사용하여 원격에 이미 존재하는지 확인할 수 있습니다.
git branch -r
이렇게 하면 원격 지점을 로컬로 가져오고 원격 지점을 자동으로 추적합니다.
Harshit Agarwal사용하다:
git checkout -b serverfix origin/serverfix
--track
속기를 제공하는 충분히 일반적인 작업입니다.
git checkout --track origin/serverfix
사실, 이것은 너무 일반적이어서 해당 바로 가기에 대한 바로 가기도 있습니다. 체크아웃하려는 브랜치 이름이 (a) 존재하지 않고 (b) 하나의 리모컨에만 있는 이름과 정확히 일치하는 경우 Git은 다음과 같이 추적 브랜치를 생성합니다.
git checkout serverfix
원격 브랜치와 다른 이름으로 로컬 브랜치를 설정하려면 다른 로컬 브랜치 이름을 가진 첫 번째 버전을 쉽게 사용할 수 있습니다.
git checkout -b sf origin/serverfix
이제 로컬 브랜치 sf
가 자동으로 origin/serverfix
에서 가져옵니다.
출처: Pro Git, 2nd Edition , Scott Chacon 및 Ben Straub 작성 (가독성을 위해 잘라냄)
ManuelSchneid3r이 간단한 명령으로:
git checkout -b 'your_branch' origin/'remote branch'
Karthik damodara[빠른 답변]
많은 대안이 있으며 내가 가장 좋아하는 것은 다음과 같습니다.
- 대안 1:
git fetch --all git checkout YourBranch
원격에 존재하지만 로컬에는 존재하지 않는 분기를 사용하여 이 대안을 사용합니다.
- 대안 2:
git checkout -b 'YourBranch' origin/'YourRemote'
아마도 이것이 가장 간단한 방법일 것입니다.
Javier C.나에게 도움이 된 것은
1) 사용 가능한 모든 원격 분기 보기(예: 'remote-branch-name')
git branch -r
2) 원격 브랜치 이름을 사용하여 로컬 브랜치 생성
git fetch && git checkout 'remote-branch-name'
Arlan Tgit fetch git branch -r git checkout <branch_name>
John Rodriguez원격 브랜치를 한 번에 가져오고 체크아웃할 수도 있습니다.
git fetch && git checkout the-branch-name
Kumar Sambhav나는 입력했다
git checkout <branch_name>
그리고 얻었다
Branch <branch_name> set up to track remote branch <branch_name> from origin. Switched to a new branch '<branch_name>'
Guillaume Guillaume때때로 당신은 마스터 브랜치를 다루지 않고 원격 브랜치만 작업하라는 요청을 받습니다(내가 요청한 대로). 따라서 필요한 것은 원격 분기뿐입니다.
따라서 마스터 없이 원격 분기만 복제하려면 다음을 수행하십시오.
git clone url --branch remote_branch_name
여기서 remote_branch_name은 원격 분기의 이름입니다.
예를 들어,
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15
이렇게 하면 원격 분기의 이름을 사용하여 원격 분기를 로컬 분기에 복제할 수 있습니다.
이제 코드를 커밋하고 푸시하면 해당 분기에만 코드가 제출됩니다.
ganezdragon단계는 다음과 같습니다.
git fetch origin
또는 git fetch --all
, 이것은 모든 원격 브랜치를 로컬로 가져온 다음 처리할 수 있는 두 번째 옵션입니다.
git checkout --track origin/<The_remote_branch you want to switch over>
그런 다음 이 분기에서 작업하고 다음을 입력하여 해당 분기에 있는지 여부를 확인할 수 있습니다.
git branch
현재 있는 지점을 표시합니다.
Sam원격이 git@xyz.git이고 random_branch 분기를 원한다고 가정해 보겠습니다. 프로세스는 다음과 같아야 합니다.
먼저 리모컨 목록을 확인하십시오.
git remote -v
위 명령의 출력에 git@xyz.git remote가 없으면 다음과 같이 추가합니다.
git remote add xyz git@xyz.git
- 이제 다음을 통해 해당 리모컨의 내용을 가져올 수 있습니다.
git fetch xyz
- 이제 다음과 같이 해당 리모컨의 분기를 확인하십시오.
git checkout -b my_copy_random_branch xyz/random_branch
- 다음으로 지점 목록을 확인하십시오.
git branch -a
로컬 브랜치 my_copy_random_branch는 리모컨의 random_branch 브랜치를 추적합니다.
zafar142003모든 원격 분기를 가져오려면 다음을 입력하십시오.
git fetch --all
Ishwor Khanal
git fetch --all & git checkout <branch name>
Jerome Anthonygit fetch && git checkout <your friend's branch name>
이 트릭을 수행해야 합니다.
tambakoo--depth 1
로 복제된 저장소가 있는 경우 나열된 많은 명령이 작동하지 않습니다. 예를 들어 여기를 참조하십시오.
% git clone --depth 1 https://github.com/repo/code Cloning into 'code'... cd code remote: Counting objects: 1778, done. remote: Compressing objects: 100% (1105/1105), done. remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0 Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done. Resolving deltas: 100% (87/87), done. Checking connectivity... done. Checking out files: 100% (1215/1215), done. % cd code % git checkout other_branch error: pathspec 'other_branch' did not match any file(s) known to git. % git fetch origin other_branch remote: Counting objects: 47289, done. remote: Compressing objects: 100% (15906/15906), done. remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0 Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done. Resolving deltas: 100% (30151/30151), completed with 362 local objects. From https://github.com/repo/code * branch other_branch-> FETCH_HEAD % git checkout other_branch error: pathspec 'other_branch' did not match any file(s) known to git. %
이 경우 저장소를 다시 복제하지만 아마도 다른 기술이 있을 수 있습니다. 예를 들어 git Shallow clone(clone --depth)이 원격 분기를 놓치는 경우가 있습니다.
Colin D모든 원격 분기를 로컬 로 가져오고 원하는 새로 생성된 로컬 분기로 전환하기 위한 한 줄짜리 명령을 제공하고 싶습니다.
git fetch && git checkout discover
위의 명령어를 실행하면 아래와 같은 메시지가 나옵니다.
Switched to a new branch 'discover' Branch discover set up to track remote branch discover from origin.
첫 번째 줄에는 새 분기 로 전환되었다는 내용이 나와 있습니다. 왜 새롭습니까? 이미 원격에 있습니다!
그러나 실제로는 로컬에서도 생성해야 합니다. 분기는 원격 인덱스에서 가져오고 로컬로 생성됩니다.
여기 discover
discover
에서 생성된 새 브랜치입니다.
그러나 두 번째 줄 은 다음을 알려주는 첫 번째 줄보다 더 많은 정보를 제공합니다.
우리 브랜치는 같은 이름의 원격 브랜치를 추적하도록 설정되어 있습니다.
git fetch
모든 분기 를 로컬로 가져옵니다. 하지만 이후에 git branch
를 실행하면 로컬에 master
왜 ?
원격에 있는 모든 분기에 대해 로컬에서도 생성해야 하기 때문에 위의 예에서 수행한 git checkout <branchname>
git checkout
명령을 실행한 후 git branch
실행할 수 있으며 이제 두 가지 분기를 모두 볼 수 있습니다.
- 마스터 및 2. 지역 목록에서 발견하십시오.
Haritsinh Gohil다음을 시도하십시오.
git pull origin your_branch_name
Rizo원격 지점을 이미 그렇게 알고 있다면 ...
git remote => One => Two
체크아웃하려는 브랜치 이름(예: br1.2.3.4 )을 알고 다음을 수행합니다.
git fetch One => returns all meta data of remote, that is, the branch name in question.
남은 것은 지점을 확인하는 것뿐입니다.
git checkout br.1.2.3.4
그런 다음 새 가지를 만드십시오.
SoEzPz.git/config
파일, 특히 해당 원격 에 대한 가져오기 시 어떤 추적이 있는지 확인하십시오.
[remote "randomRemote"] url = git@github.com:someUser/someRepo.git fetch = +refs/heads/*:refs/remotes/randomRemote/*
heads/*
가리키는 randomRemote/*
가 있는 경우 git fetch randomRemote
를 실행할 때 모든 분기를 가져옵니다.
그런 다음 해당 지점을 체크아웃하면 됩니다.
그렇지 않으면,
이것을 사용하여 추적에 원격 분기를 추가해야 합니다. 이것을 실행한 후 .git/config
확인하십시오. 당신은 이해할 것이다.
git remote set-branches --add randomRemote randomBranch
git fetch randomRemote
실행합니다. 이것은 원격 브랜치를 가져올 것입니다.
git checkout randomBranch
실행할 수 있습니다.
Vamshi Suram
git branch <name> --track origin/<name>
Chris F Carroll분기를 분리하기 위해 'git pull'을 사용합니다. 'lbranch'와 'rbranch'는 해독하기 어렵기 때문에 실제 저장소와 분기 이름을 사용하여 도움을 드리겠습니다.
다음을 사용합시다:
myteam.unfuddle.com = 원격 Git 서버 tlc = 저장소가 있는 Unfuddle 프로젝트 계정 daves_branch = 원격 브랜치 이름 당신이나 다른 동료는 이것을 실행하여 얼마나 많은 브랜치가 있는지에 상관없이 당신의 브랜치를 가져올 수 있습니다:
git init git pull git@myteam.unfuddle.com:myteam/tlc daves_branch:refs/remotes/origin/daves_branch
Andrew간단한 명령인 git checkout remote_branch_name
은 원격 분기의 모든 변경 사항이 있는 로컬 분기를 만드는 데 도움이 됩니다.
Sijeeshgit clone <repo_url> -b <branch>
(특정 분기만 복제)로 저장소를 다운로드하는 경우 <repo_name>/.git/config
파일을 수정해야 합니다. git fetch --all
명령이 모든 분기를 검색할 수 있도록 [remote "origin"]
섹션의 가져오기 대상을 참조하는 줄을 바꾸거나 수정합니다.
[remote "origin"] url = <repo_git_url> fetch = +refs/heads/master:refs/remotes/origin/master
가져오기 매개변수 지점을 /heads/master
로 설정해야 합니다.
git fetch --all
주의하세요. 모두 가져오므로 시간이 오래 걸릴 수 있습니다.
Shide출처 : http:www.stackoverflow.com/questions/9537392/git-fetch-remote-branch