“git branch -r”에 원격 브랜치가 나타나지 않습니다


140

나는 원격 Bitbucket 저장소로 밀고 왔으며 최근 동료는 그가 만든 새로운 지점을 동일한 저장소로 밀어 넣었습니다.

그가 업로드 한 변경 사항을 가져 오려고합니다.

 $ git branch -a
 * master
 localbranch1
 localbranch2
 remotes/origin/master

$ git branch -r origin / 마스터

Bitbucket의 웹 UI에서 그가 만든 지점을 볼 수 있습니다. 어떻게해야합니까?

다음 시도 :

$ git fetch bitbucket
Password for 'https://xxxxx@bitbucket.org':
From https://bitbucket.org/user/repo
 * branch            HEAD       -> FETCH_HEAD

그가 만든 브랜치가 new_branch_b 라면 다음을 볼 수 있을까요?

$ git branch -r
origin/master
origin/new_branch_b

세 번째 시도 :

$ git remote update
Fetching bitbucket
Password for 'https://xxxxx@bitbucket.org':
From https://bitbucket.org/user/repo
 * branch            HEAD       -> FETCH_HEAD

$ git branch -r
  origin/master

네 번째 시도 :

[remote "bitbucket"]
url = https://user@bitbucket.org/user/repo.git

나는 bitbucket원산지보다는 리모컨을 불렀다. (적어도 그것은 내가 기억하는 것이다; 나는 얼마 전에 그것을 설정했다)

다섯 번째 시도 :

칸의 답변에 따라 Bitbucket 원격 구성을 업데이트했습니다 .

$ git config -e

[remote "bitbucket"]
    url = https://user@bitbucket.org/user/repo.git
    fetch = +refs/heads/*:refs/remotes/bitbucket/*

대부분의 사람들에게 그것을 원산지라고 부릅니다.

[remote "origin"]
    url = https://user@bitbucket.org/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*

나중에,

$ git remote update

Fetching bitbucket
Password for 'https://user@bitbucket.org':
remote: Counting objects: 48, done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 35 (delta 21), reused 0 (delta 0)
Unpacking objects: 100% (35/35), done.
From https://bitbucket.org/user/repo
 * [new branch]      branch_name1 -> origin/branch_name1
 * [new branch]      branch_name2    -> origin/branch_name2

.... 등등.

나는 git fetch origin또한 일할 것이라고 생각한다 git remote update.


1
쿨하지만 어쩌면 refs/remotes/bitbucket/*대신에 사용하는 것이 더 합리적 이었습니다 refs/remotes/origin/*.
kan

명명 일관성에 대해 정식으로 감사합니다. 그래도 비트 버킷을 원래대로 변경하는 것이 더 합리적입니다! 협약과 그 모든 것 :)
feargal

1
git fetch origin일을
접시

답변:


108

그만큼 remote 섹션에서는 페치 규칙도 지정합니다. 원격에서 모든 분기를 가져 오기 위해 이와 같은 것을 추가 할 수 있습니다.

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

(또는 교체 origin 와 함께bitbucket .)

여기에서 읽어보십시오 : 10.5 Git Internals-The Refspec


3
이것은 몇 주 동안 Git에서 진행중인 분기 문제를 해결했습니다. 갑자기 모든 자식 원격 업데이트 작업이 실제로 시작되었습니다. 감사!
PålOliver

2
어떤 이유로, 그것은 다음과 같습니다 fetch = +refs/heads/master:refs/remotes/origin/master. 교체 master*고정 내 문제.
Sebastian Blask

2
얕은 복제본을 얕은 복제본으로 변환 한 경우 매우 유용합니다.
Warpzit

@kan 왜 이런 일이 발생하는지 아십니까? git clone프로젝트 때 나에게 일어난다 . 나는 내 지역 자식과 특별한 일을 한 것을 기억하지 못한다.
dotnetCarpenter

@dotnetCarpenter 확실하지 않습니다 ... 예기치 않게 나에게 일어난 적이 없습니다. 그것은 가능성이 clone중단 된 후 재개했다? 아니면 다른 저장소에 동시에 액세스 했습니까?

218

리모컨을 아직 업데이트하지 않은 경우 업데이트하십시오.

$ git remote update
$ git branch -r

1
Win에서 GitHub 클라이언트를 사용하고 있으며 때로는 원격 브랜치를 업데이트하지 않습니다. 첫 번째 줄 "git remote update"는 매력처럼 작동합니다. 간편하고 깨끗함
Stefano Buora

이후 git remote update나는 UI에 새로운 지점을 볼 수 있습니다. 감사합니다
Tinkaal Gogoi 2016

도움이되지 않았습니다.
dKab

나는 aleady가 성공적으로 지점을 가져 왔지만가 표시된 지점을보아야한다고 생각했습니다 git branch -r. 에 git-scm.com/docs/git-branch 는 "원격 추적 브랜치가 나열됩니다 -r 옵션 및 옵션 -a 쇼 로컬 및 원격 지점"을 말한다. git remote update에 나열된 모든 리모컨의 모든 분기를 가져옵니다 git remote -v.
Rock Lee

이것을 실행 한 후에 나는 달릴 수 있었고 git checkout origin/master분리 된 헤드에서 내 마스터 브랜치로 분기되었습니다.git branch master; git checkout master
Dfranc3373

35

--depth매개 변수를 사용하여 복제하면 .git/config모든 분기를 가져 오지 않고 마스터 만 가져 오도록 설정합니다 .

간단히 매개 변수를 생략하거나 구성 파일을 업데이트 할 수 있습니다.

fetch = +refs/heads/master:refs/remotes/origin/master

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

1
감사! 당신은 실제로 문제를 쉽게 해결하고 올바른 방법으로 보입니다. 그러나 구성 파일이에 있음을 추가해야 .git/config사람들이 찾을 수 있습니다.
dotnetCarpenter

19

나는 같은 문제가 있었다. 가장 쉬운 해결책은 리모컨을 제거하고 읽은 다음 가져 오는 것입니다.


1
이 답변을 찾기 위해 많은 시간을 보냈습니다. 이것은 아무런 문제없이 작동했습니다. 감사. :)
kisanme

1
나를 위해
일한

1
git remote -v리모컨을 표시하여 URL을 잡고 git remote rm origin제거하고 git remote add origin <url>다시 추가 할 수 있습니다.
Siddhartha

이것은 나를 위해 일했습니다. 어떻게 든 마스터보다 원격 브랜치를 가져 오지 않은 git 서브 모듈이 있습니다. 그것을 제거하고 다시 추가하면 해결되었습니다.
Zamrony P. Juhara 21'33

나를 위해 일했지만 지금 경고가 나타납니다warning: ignoring broken ref refs/remotes/origin/HEAD
dafnahaktana

7

불행하게도, git branch -a그리고 git branch -r수 없습니다 당신이 "가져 힘내"실행하지 않은 경우, 당신에게 모든 원격 지점을 보여줍니다.

git remote show origin항상 일관되게 작동합니다. 또한 git show-refGit 저장소의 모든 참조를 보여줍니다. 그러나 git branch명령 과 동일하게 작동합니다 .

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