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

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

올바른 조치는

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모든 가능한 순열의 …



답변

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/*

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

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


답변

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

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

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

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

다음으로 제거 :
git remote rm origin

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


답변

원격 업데이트

당신은 실행해야합니다

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


답변

터미널에서 작성

git fetch --prune.

잘 작동합니다.


답변

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

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

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


답변

비슷한 문제가 있었지만 제 경우에는 원격 지점으로 당길 수 있지만 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/*


답변

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