자식에서 가져 오기가 모든 분기를 얻지는 않습니다.


201

리포지토리를 복제 한 후 다른 누군가가 새 브랜치를 만들었습니다.이 브랜치는 작업을 시작하고 싶습니다. 나는 매뉴얼을 읽었고, 쉽게 죽는 것처럼 보인다. 이상하게도 작동하지 않으며 내가 찾은 모든 게시물은 내가 옳은 일을하고 있다고 제안합니다. 나는 몹시 때리는에 자신을 복종거야 그래서, 때문에이 있어야 이와 분명히 뭔가 잘못 될 :

올바른 조치는

git fetch
git branch -a
* master
  remotes/origin/HEAD --> origin/master
  remotes/origin/master
git checkout -b dev-gml origin/dev-gml

이 시점에서 어떤 이유로 git fetchdev-gml 원격 지점을 볼 수없는 문제가 있습니다. 왜 안돼? 저장소를 새로 복제하면 거기에 있으므로 원격 지점이 존재합니다.

$ mkdir ../gitest
$ cd ../gitest
$ git clone https://github.com/example/proj.git
Cloning into proj...
remote: Counting objects: 1155, done.
remote: Compressing objects: 100% (383/383), done.
remote: Total 1155 (delta 741), reused 1155 (delta 741)
Receiving objects: 100% (1155/1155), 477.22 KiB | 877 KiB/s, done.
Resolving deltas: 100% (741/741), done.
$ cd projdir
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev-gml
  remotes/origin/master

내가 시도했습니다 git update, git pull, git fetch --all, git pretty-please모든 가능한 순열의 ...


44
무엇을 git config --get remote.origin.fetch생산합니까? 그렇지 않은 +refs/heads/*:refs/remotes/origin/*경우 아마도 있어야합니다.
torek

p 그것이 정확히 생산하는 것
Edward Newell

3
정확히 같은 문제이지만 위의 의견으로 해결되었습니다! 내가 가지고 +refs/heads/master:refs/remotes/origin/mastermaster대신*
미르코

1
나에게도 같은 문제이지만이 페이지의 제안으로 해결되지 않습니다. 기묘한.
Magnus

1
@ thoni56 : 예, 복제가 얕기 때문일 수 있습니다.
Trần Việt Hoàng

답변:


383

remote.origin.fetch설정을 확인할 때 문제를 볼 수 있습니다
(로 시작하는 $줄은 입력 한 명령이있는 bash 프롬프트입니다. 다른 줄은 결과 출력입니다)

$ git config --get remote.origin.fetch
+refs/heads/master:refs/remotes/origin/master

보시다시피, 제 경우에는 리모콘이 마스터 브랜치를 구체적으로 가져 오도록 설정되었습니다. 결과를 확인하는 두 번째 명령을 포함하여 아래에서 수정했습니다.

$ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
$ git config --get remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*

와일드 카드 *는 물론 해당 경로 아래의 모든 것을 의미합니다.

불행히도 나는 이미 파고 들었고 시행 착오로 답을 찾은 후에이 의견 을 보았습니다 .


2
원래 게시물의 문제를 실제로 해결 했으므로 아마도 받아 들일만한 대답이어야합니다.
LocalPCGuy

1
단지 보조 노트, 내가 추가 한 --replace-all나의의 구성에 모든 값을 대체 할 매개 변수를remote.origin.fetch
Garis M Suero

4
단일 브랜치로만 리포지토리를 복제 한 경우 이러한 상황이 발생할 수 있습니다. 예 :git clone <url> --branch <branch> --single-branch [<folder>]
Narretz

2
stux의 답변을 확인하십시오
Newbee

5
다음과 같이 복제 할 때 이런 일이 발생할 수 있습니다git clone ... --depth 1
Anatolii Bivol

107

나는 오늘 레포 에서이 문제를 겪었다.

+refs/heads/*:refs/remotes/origin/*최고의 솔루션에 따라 문제 가되지 않았습니다 .

가져올 원격 브랜치가 있지만 증상은 단순히 그랬 git fetch origin거나 git fetch아무것도하지 않는 것 같습니다.

많은 것을 시도한 후 원점을 제거하고 다시 만들었습니다. 그것은 그것을 고친 것 같습니다. 이유를 모릅니다.

다음으로 제거 : git remote rm origin

다음을 사용하여 다시 작성하십시오. git remote add origin <git uri>


14
remote.origin.fetch예를 들어 올바른 git config가 +refs/heads/*:refs/remotes/origin/*있습니다. 위의 솔루션이 도움이되었습니다.
Newbee

9
이 솔루션은 나에게도 맞는 솔루션이었습니다. Git에 버그가 있음을 나타내므로 유감입니다.
Robert Oschler 2018 년

2
이것은 또한 내 문제를 해결했습니다. 또한 git 버전 2.19.1v가있는 컴퓨터 에서이 문제가있는 것으로 보이지만 git 버전 2.17.1이있는 다른 컴퓨터에서는이 문제가 발생하지
않았습니다.

6
git remote update origin나를 위해 일했다. 뭔가 새로 고침해야 할 것 같아요?
Felipe Gerard

2
git remote update origin나를 위해 작동하지 않았지만 리모컨을 제거하고 추가했습니다.
Anatoliy Kmetyuk

58

원격 업데이트

당신은 실행해야합니다

git remote update

또는

git remote update <remote> 

그런 다음 git branch -r원격 분기를 나열하기 위해 실행할 수 있습니다 .

새로운 지점을 체크 아웃

(새) 원격 지점을 로컬 지점으로 추적하려면

git checkout -b <local branch> <remote>/<remote branch>

또는 (때로는 추가없이 작동하지 않는 경우 remotes/) :

git checkout -b <local branch> remotes/<remote>/<remote branch>

유용한 git cheatsheets


5
그러나 내 문제는 내 자식 클라이언트가 존재하지 않는다고 생각하기 때문에 기존 원격 지점을 체크 아웃 할 수 없다는 것입니다. 내 질문을 참조하십시오. 내가 실행 한 git fetch후에 git branch -a모든 분기가 표시되지는 않습니다. dev-gml공동 작업자가 만든 지점을 보려면 작업 디렉터리를 삭제하고 다시 복제해야 했습니다. 이번에는 효과가 있었지만, 자주 분기 될 것입니다!
Edward Newell

@EdwardNewell 이봐, 대답을 위해 당신의 링크 cheat.errtheblog.com/s/git 가 나를 위해 죽었다는 것을 알려줍니다 ...
Kjellski

처음이 질문을 한 지 오래되었습니다. 누군가가 새로 게시했기 때문에 핑을 받았습니다. 원래 아무것도 실제로 저에게 효과가 없었지만이 답변을 수락하고 있습니다. 내가이 사실을 마지막으로 표시 한 이유는 그가 옆에 쓴 내용 Edit:이 효과가있을 것으로 의심하기 때문 입니다. 여전히 문제에 직면하고 있다면 시도 할 것입니다. HTH
Edward Newell

기록을 위해 여기에 도움이 된 비트는 git remote update origin입니다. 이를 통해 누락 된 분기를 통해 볼 수 있습니다 git branch -l -r. (내가 봐 않았다 git config --get remote.origin.fetch및 출력이되었다 +refs/heads/*:refs/remotes/origin/*같은 예상.)
로버트 Dodier

9

터미널에서 작성

git fetch --prune.

잘 작동합니다.


1
감사합니다! 나는 많은 것들을 시도했고 나는 단지 이것을 한 번 줄 것이라고 생각했다 ... 이제 내가 실제로 한 일을 찾아보기 위해 ...
MadTurki

무엇을합니까?
Adam Orlov

사용 가능한 모든 지점이 필요합니다. 머리 좀 봐
Samet ÖZTOPRAK

4

보다 구체적으로 추적 지점을 만듭니다. 이제 원격 지점을 추적하고 있습니다.

git branch --track branch remote-branch
git branch --track exp remotes/origin/experimental

그 후 당신은 할 수 있습니다

git branch   # to see the remote tracking branch "exp" created .

그런 다음 해당 지점에서 작업하려면

git checkout branchname
git checkout exp

지점을 변경 한 후 원격 추적 분기와 git fetch 및 git merge를 사용하여 변경 사항을 병합하고 아래와 같이 원격 분기로 푸시 할 수 있습니다.

git fetch origin
git merge origin/experimental  
git push origin/experimental

그것이 도움이되고 이것이 어떻게 작동하는지 아이디어를 제공하기를 바랍니다.


1

비슷한 문제가 있었지만 제 경우에는 원격 지점으로 당길 수 있지만 git status 의 로컬 브랜치 상태는 표시하지 않았습니다.

또한 내 경우에는 git config --get remote.origin.fetch 아무것도 반환하지 않았습니다.

문제는 오타가 있었다는 것입니다 .git/config 파일에 각 원격 블록의 페치 라인에 입니다. 아마도 실수로 이전에 실수로 추가 한 것일 수도 있습니다 (때로는이 파일을 직접 보거나 편집하기도합니다)

따라서 .git/config파일 의 원격 항목 이 올바른지 확인하십시오. 예 :

[remote "origin"]
    url = https://[server]/[user or organization]/[repo].git
    fetch = +refs/heads/*:refs/remotes/origin/*

0

페이스 팜 모멘트 때문일 수 있습니다. 여러 복제본간에 전환하면 존재하지 않는 분기를 가져 오려고 잘못된 소스 트리에서 자신을 쉽게 찾을 수 있습니다. 클론의 이름이 비슷하거나 저장소가 동일한 여러 프로젝트에 대해 동일한 프로젝트에 대해 고유 한 클론 인 경우 더 쉽습니다. 새로운 git clone은 실제 문제가 포커스 나 작업 컨텍스트 또는 둘 다를 잃을 때 "문제"를 해결하는 것 같습니다.


0

여기서 아무것도 작동하지 않는 것처럼 GitExtensions Remote Repositories에 들어가야했습니다. 거기에 2 개의 지점에 원격 저장소가 구성되어 있지 않은 것을 보았습니다. 조정 후 다음과 같이 보입니다.여기에 이미지 설명을 입력하십시오

통지 분기에는 noExternal3여전히 원격 저장소가없는 것으로 표시됩니다. bash 명령의 콤보가 무엇을 찾거나 조정했는지 확실하지 않습니다.


0

오늘 같은 문제가 내 저장소를 처음부터 설정했습니다. 나는 모든 것을 시도했지만, 원점을 제거하고 다시 다시 추가하는 것 외에는 아무런 효과가 없었습니다.

git remote rm origin
git remote add origin git@github.com:web3coach/the-blockchain-bar-newsletter-edition.git

git fetch --all
// Ta daaa all branches fetched

-1

우리는 같은 문제가 있었고 당신은 사용해야합니다

git fetch

git push origin branch_name

git branch -r

이것이 같은 문제에 직면하는 누군가를 돕기를 바랍니다.

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