힘내 : 새 원격 분기를 볼 수 없습니다.


118

동료가 새 원격 지점을 origin / dev / homepage로 푸시했는데 실행할 때 볼 수 없습니다.

$ git branch -r

여전히 기존 원격 지점이 보입니다.

내 로컬 원격 참조가 최신 상태가 아니기 때문에 git pull을 실행했을 때 git pull이 현재 작업 브랜치를 올바르게 가져 오기 때문에 아무 일도 일어나지 않았기 때문이라고 가정합니다. 해당 원격 분기에 변경 사항이있는 모든 분기를 푸시하는 git push와 달리?



1
관리는 잊지 git pull덕분에
JelenaČuklina

1
제 경우 git fetch <name-of-remote>에는 트릭을했습니다. 리모컨의 이름이 없으면 작동하지 않았습니다.
Menno Deij-van Rijswijk

답변:


166

먼저 명령을 사용하여 분기가 실제로 원격으로 푸시되었는지 다시 확인합니다 git ls-remote origin. 새 분기가 출력에 나타나면 다음 명령 git fetch을 입력하십시오. 원격 저장소에서 분기 참조를 다운로드해야합니다.

원격 분기가 여전히 나타나지 않으면 ls-remote출력에서 원격에서 분기 이름이 무엇인지, 특히 refs/heads/. 이는 기본적으로의 값이 다음과 같기 때문 remote.<name>.fetch입니다.

+refs/heads/*:refs/remotes/origin/*

이름이로 시작하는 원격 참조 만 refs/heads/로컬에서 원격 추적 참조로 매핑됩니다 refs/remotes/origin/(즉, 원격 추적 분기가 됨).


4
git fetch origin을 수행 한 후 새 원격 브랜치를 볼 수 있었지만 방금 git fetch를 수행 한 경우 차이점이 무엇인지 확실하지 않습니까? 나는 git 원격 업데이트에 대해 읽었지만 그게 무엇을했는지 명확하지 않았습니다. 여기에서 새로운 원격 분기에 대해 git fetch를 실행해야합니까?
hybrid9

1
@ hybrid9를 사용하는 git fetch경우 git은에 지정된 기본 원격 저장소에서 참조를 다운로드합니다 .git/config. 일반적으로 호출 origin되므로 두 명령이 동일하지만 특정 구성은 어떤 이유로 든 다를 수 있습니다. 아니요, git fetch(기본적으로) 모든 분기를 가져 오므로 모든 분기에 대해 줄 필요가 없습니다 .
Marco Leogrande 2012 년

1
@ hybrid9 git pullgit fetch+ git merge(또는 git rebase기본값을 변경 한 경우)와 동일하므로 git pull평소처럼 계속 사용할 수 있으며 새 원격 분기가 저절로 팝업됩니다.
Marco Leogrande 2012 년

1
나는 원래 git pull을 실행했지만 실제로 나를 혼란스럽게 만든 새로운 원격 지점을 본 적이 없습니다. 내가 git fetch origin을 실행할 때까지만. 제 질문에 답 해주셔서 감사합니다.
hybrid9

2
@hybrid 같은 문제가 있습니다. git ls-remote gerritrepo:project쇼는하지만 새 원격 지점을 git branch -a하지 않습니다 ... 나는 또 다른 클론을해야 만 다음 새 지점이 표시됩니다
비 크람

79

.git/config포함 여부 확인

[remote "origin"]
    url = …
    fetch = +refs/heads/master:refs/remotes/origin/master

그렇다면 다음과 같이 변경하십시오.

[remote "origin"]
    url = …
    fetch = +refs/heads/*:refs/remotes/origin/*

그런 다음 사용할 수 있어야합니다.

$ git fetch
remote: Counting objects: …
remote: Compressing objects: ..
Unpacking objects: …
remote: …
From …
 * [new branch]            branchname -> origin/branchname
$ git checkout branchname
Branch branchname set up to track remote branch branchname from origin.
Switched to a new branch 'branchname'

12
이것은 초기 얕은 복제 후에 나에게 일어났습니다.
ArkTekniK

완전한!!! 감사합니다! 명령을 사용하여 사용자 정의 Homebrew 탭을 설치할 때 발생했습니다 brew tap user/repo: 복제 된 저장소의 로컬 사본에는 brew언급 한 설정이 있었고 내 저장소에있는 다른 분기를보고 사용할 수 없었습니다. 다시 한 번 감사드립니다! :) +1!
rmbianchi

3
.git / config 파일 을 수동으로 편집하는 대신 다음 명령을 사용할 수 있습니다 . git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"그런 다음 git fetch origin모든 분기를 원점 에 가져옵니다 .
dotnetCarpenter

이것은 좋은 것입니다!
madz

47

가장 간단한 대답은 다음과 같습니다.

git fetch origin <branch_name>


2
이것은 말 그대로 나를 위해 일한 유일한 것입니다.
Theodore R. Smith

3
나를 위해 작동하지 않습니다. 이 오류가 발생합니다.fatal: Couldn't find remote ref <branch_name>
Parisa Khateri

3
예,이 git checkout이 잘 작동 한 후 나에게도 효과적이었습니다!
whoami

30

git 원격 업데이트를 수행하면 원격 저장소에서 사용할 수있는 브랜치 목록도 업데이트 됩니다.

버전 1.8.3.0부터 TortoiseGit을 사용하는 경우 "Git-> 동기화"를 수행 할 수 있으며 나타나는 창 왼쪽 하단에 "원격 업데이트"버튼이 있습니다. 그것을 클릭하십시오. 그런 다음 "Git-> Switch / Checkout"을 수행하고 선택할 수있는 분기의 드롭 다운에 새 원격 분기를 표시 할 수 있어야합니다.


18
git remote update이 작업을 수행하는 오래된 방법이며, 최신 선호 명령은 git fetch입니다.

내 버전의 TortoiseGit (2.8.0.0)에서 왼쪽 하단의 버튼에는 화살표 아래에 여러 옵션이 있으며 이전에 선택한 항목을 기억합니다. 이는 버튼에 "원격 업데이트"가 표시되지 않을 수 있음을 의미합니다. 사용하지 않은 경우 "Pull"이라고 표시됩니다. 따라서 화살표를 클릭하면 옵션 목록에 "원격 업데이트"가 표시됩니다.
Michael Hinds

14

release / 1.0.5를 검색한다고 가정 해 보겠습니다.

하면 git fetch -all됩니다 작동하지 않는 및 원격 분기를 볼 수 없습니다 및 git branch -r하지이 특정 지점을 보여줍니다.

1. 원격지 (분기, 태그 등)에서 모든 참조를 인쇄합니다.

git ls-remote origin 검색중인 원격 지점을 표시해야합니다.

e51c80fc0e03abeb2379327d85ceca3ca7bc3ee5        refs/heads/fix/PROJECT-352
179b545ac9dab49f85cecb5aca0d85cec8fb152d        refs/heads/fix/PROJECT-5
e850a29846ee1ecc9561f7717205c5f2d78a992b        refs/heads/master
ab4539faa42777bf98fb8785cec654f46f858d2a        refs/heads/release/1.0.5
dee135fb65685cec287c99b9d195d92441a60c2d        refs/heads/release/1.0.4
36e385cec9b639560d1d8b093034ed16a402c855        refs/heads/release/1.0
d80c1a52012985cec2f191a660341d8b7dd91deb        refs/tags/v1.0

새 분기 'release / 1.0.5'가 출력에 나타납니다.

2. 원격 분기 강제 가져 오기 :

git fetch origin <name_branch>:<name_branch>

$ git fetch origin release/1.0.5:release/1.0.5

remote: Enumerating objects: 385, done.
remote: Counting objects: 100% (313/313), done.
remote: Compressing objects: 100% (160/160), done.

Receiving objects: 100% (231/231), 21.02 KiB | 1.05 MiB/s, done.
Resolving deltas: 100% (98/98), completed with 42 local objects.
From http://git.repo:8080/projects/projectX
 * [new branch]        release/1.0.5 -> release/1.0.5

이제 로컬에서도 ref가 있으므로이 브랜치를 체크 아웃합니다.

완료되었습니다!


1
당신은 생명의 은인입니다 :)
Chakri

# 2는 내가 찾던 것이었다. 감사!
Matthew

4

사소하게 들리지만 내 문제는 내가 올바른 프로젝트에 있지 않다는 것입니다. 예상되는 프로젝트에 참여하고 있는지 확인하십시오. 그렇지 않으면 올바른 분기를 끌어 내릴 수 없습니다.


웁스! 잘 했어!
Marc

2

나는 무차별 대입을 사용하고 리모컨을 제거한 다음 추가했습니다.

git remote rm <remote>
git remote add <url or ssh>

1

마침내 나를 위해 일한 git fetch것은 다음과 같이 명령에 원격 저장소 이름을 추가하는 것이 었습니다 .

git fetch core

이제 다음과 같이 모두 볼 수 있습니다.

git branch --all

0

원격 브랜치를 체크 아웃 할 수 있습니다. / n git fetch && git checkout remotebranch

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.