구성에서 원격의 <branch name>과 병합하도록 지정했지만 그러한 참조는 가져 오지 않았습니다.


203

풀에 대한이 오류가 발생합니다.

구성이 원격의 참조 'refs / heads / feature / Sprint4 / ABC-123-Branch'와 병합하도록 지정했지만 이러한 참조는 가져 오지 않았습니다.

다른 지점에서는이 오류가 발생하지 않습니다.
이 브랜치의 특별한 점은 다른 브랜치의 이전 커밋에서 생성된다는 것입니다.

내 구성 파일은 다음과 같습니다.

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[remote "origin"]
    url = <url here>
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "new-develop"]
    remote = origin
    merge = refs/heads/new-develop
[branch "feature/Sprint4/ABC-123-Branch"]
    remote = origin
    merge = refs/heads/feature/Sprint4/ABC-123-Branch

병합에 사용중인 명령을 공유 할 수 있습니까?
dchayka

1
원격 지점이 삭제 된 경우이 문제가 발생할 수 있습니다. 실제로 있는지 다시 확인하십시오.
Benny Neugebauer

4
향후 독자 : 원격 지점이 존재한다는 것을 알고 있다면 사례를 무시하고 있는지 확인하십시오. 원격 지점을 추적하기 위해 로컬 지점을 설정했지만 원격 이름을 모두 소문자로 입력했습니다. 그냥 origin / branchname 대신 origin / BranchName을 추적하도록 로컬을 재구성해야했습니다
Jerreck

방금이 오류가 있었고 문제가 아래 답변보다 훨씬 간단했습니다 .VPN 연결이 끊어졌습니다. 따라서 이것은 git이 원격 원 서버에 액세스 할 수없는 경우 발생하는 오류입니다.
벤 서리

내 자식 서버가 종료되었습니다. 그게 원인입니다.
델라 사 비아

답변:


150

이게 무슨 뜻이야

업스트림 (귀하가 부르는 리모콘) origin은 더 이상 지사를 가지지 않았거나 갖지 못했을 것입니다 (이 정보만으로는 알 수 없습니다) feature/Sprint4/ABC-123-Branch. 그에 대한 일반적인 이유 중 하나가 있습니다. 누군가 (아마도 당신이 아니거나 기억할 것입니다) 다른 Git 저장소에서 지점을 삭제했습니다.

해야 할 일

이것은 당신이 원하는 것에 달려 있습니다 . 아래의 토론 섹션을 참조하십시오. 당신은 할 수 있습니다 :

  • 리모컨에서 분기를 만들거나 다시 만들거나
  • 현지 지점을 삭제하거나
  • 당신이 생각할 수있는 다른 것.

토론

실행 중이어야합니다 (실행중인 git pull경우 git merge다른 오류 메시지가 표시되거나 오류 메시지가 표시되지 않음).

을 실행하면 git fetchGit 은 구성 섹션 url아래의 라인을 기준으로 다른 Git에 연결 [remote "origin"]합니다. 힘내 명령 (실행되는지 upload-pack, 무엇보다도 전송) 여러분 힘내 모든 지점의 목록을. git ls-remote이것이 어떻게 작동하는지 볼 수 있습니다 (시도하고 교육적입니다). 다음은 Git 저장소에서 실행할 때 얻을 수있는 스 니펫입니다 git.

$ git ls-remote origin
From [url]
bbc61680168542cf6fd3ae637bde395c73b76f0f    HEAD
60115f54bda3a127ed3cc8ffc6ab6c771cbceb1b    refs/heads/maint
bbc61680168542cf6fd3ae637bde395c73b76f0f    refs/heads/master
5ace31314f460db9aef2f1e2e1bd58016b1541f1    refs/heads/next
9e085c5399f8c1883cc8cdf175b107a4959d8fa6    refs/heads/pu
dd9985bd6dca5602cb461c4b4987466fa2f31638    refs/heads/todo
[snip]

refs/heads/항목은 원격에 존재하는 나뭇 가지를 모두 나열 1 대응은 함께 (ID를 위해 커밋 refs/tags/엔트리 IDS는 커밋보다는 개체 태그를 가리킬 수있다).

Git은 이러한 각 브랜치 이름을 가져와 동일한 섹션 의 라인 에 따라 변경 합니다 . 이 경우, 힘내 대체 와 함께 예를 들어,. Git은 모든 브랜치 이름으로이를 수행합니다.fetchremoterefs/heads/masterrefs/remotes/origin/master

또한 특수 파일에 원래 이름을 기록합니다 FETCH_HEAD(자신의 .git디렉토리 를 들여다 보면이 파일을 볼 수 있습니다 ). 이 파일은 가져온 이름과 ID를 저장합니다.

git pull명령은 편리한 지름길을 의미 git fetch합니다. 적절한 리모콘에서 실행 한 다음 섹션의 지시에 따라 병합 (또는 리베이스)하는 데 필요한 인수를 git merge사용하여 명령 git rebase을 수행 [branch ...]합니다. 이 경우 [branch "feature/Sprint4/ABC-123-Branch"]섹션에서을 가져온 origin다음 name 아래에서 찾은 ID와 병합합니다 refs/heads/feature/Sprint4/ABC-123-Branch.

그 이름으로 아무것도 발견되지 않았으므로 git pull불평하고 멈 춥니 다.

이것을 두 개의 별도 단계로 실행 git fetch한 다음 git merge(또는 git rebase), Git은 캐시 된 remotes/origin/원격 추적 브랜치를보고 병합하거나 리베이스 할 대상을 확인합니다. 이 경우 이었다 같은 지점에서 한 번에, 당신은 여전히 원격 추적 브랜치가있을 수 있습니다. 이 경우 오류 메시지가 표시되지 않습니다. 그러한 분기가 없었거나 (원격 원격 추적 분기를 제거하는) 실행 git fetch한 경우 --prune해당 원격 추적 분기가 없으면 불만이 표시되지만 origin/feature/Sprint4/ABC-123-Branch대신 참조 됩니다.

두 경우 모두feature/Sprint4/ABC-123-Branch 현재 원격에 존재하지 않는다는 결론을 내릴 수 있습니다 origin.

한 번에 존재했을 가능성이 있으며 원격 추적 지점에서 로컬 지점을 만들었을 것입니다. 그렇다면 여전히 원격 추적 분기가있을 수 있습니다. 누가 원격에서 분기를 제거했는지, 왜, 또는 무언가를 눌러 분기를 다시 만들거나 원격 추적 분기 및 / 또는 로컬 분기를 삭제할 수 있는지 조사 할 수 있습니다.


1 , 적어도 인정할 모든 것 . 그러나 그들이 특별히 심판을 숨기지 않았다면 목록에 모든 것이 포함됩니다.


git pull 명령이 실제로하는 일을 설명해 주셔서 감사합니다. git fetch를 실행 한 다음 병합하여 문제를 해결할 수있었습니다.
fizch

11
로컬 저장소에 존재하지 않는 원격 브랜치 참조를 제거하려면git remote prune origin
Yoav

1
벤 열린 우리당 @ : 예, 또는, 실행 git fetch --prune origin, 또는 세트 fetch.prunetrue구성에서 (세 가지가 망할 놈의 몇 가지 버전이 중 일부는 매우 신뢰성이 있었지만, 같은 일을하기위한 것입니다).
torek

1
당신은 git checkout <your remote branch>모든 것이 좋을 것입니다.
Alexander Shtang

3
@JonathanBenn : git branch --set-upstream-to=origin/master master로컬 업스트림 설정을 전환하는 데 사용할 수 있습니다 master. 삭제 및-재 작성은 부작용으로 (당신이 DWIM 스타일을 사용하는 가정 것을 가지고 git checkout master당신을 강제 추가적인 부작용으로 그것을 만들 수) master당신에 맞게 origin/master.
torek

72

당신이 누군가가 지점의 이름을 바꾼 경우에도 발생할 수 있습니다. (당신이 지점 이름의 이름이 알고있는 경우) 그래서 이전 지점 이름을 가정하면 다음 단계를 수행 wrong-branch-name누군가에게 이름 correct-branch-name겠어요 -

git checkout correct-branch-name

git pull (이 "구성이 지정합니다."가 표시됩니다.)

git branch --unset-upstream

git push --set-upstream origin correct-branch-name

git pull (이전 메시지는 표시되지 않습니다)


1
필요 git push하지 않으며 현재 분기가 원격 뒤에 있으면 작동하지 않습니다. git pull origin correct-branch-name충분하다.
Pierre

2
업스트림 설정 명령이 위에 잘못되었습니다. 다음과 같이 git branch --set-upstream-to = origin / <branch와 같이 업스트림을 설정하는 명령과 함께 --unset-upstream 작업 후 git pull을 수행하십시오. > mybranch
Ankit Marothi

난 그냥 만든 새의 repo 내의 repo에서 몇 가지 큰 파일을 제거한 후 나를 위해 잘 근무하고 푸시 뒷면에 필요
larrytech

40

원격 지사를 당길 수 있는지 확인하십시오. 나는 같은 문제가 있었으며 마침내 원격 지사가 누군가에 의해 삭제되었다는 것을 깨달았습니다.


4
나도 마찬가지였다!
Aerin

3
풀 요청 후 병합 자 (즉, 병합 한 사람)는 대상 분기에 병합 된 분기를 삭제할 수 있습니다. 그 시점에서 당기려고하면이 오류가 발생합니다.
Artokun

그건 사실입니다 :)
Malhaar 펀잡

7

나를 위해 그것은 대소 문자를 구분하는 문제였습니다. 내 로컬 브랜치는 Version_Feature2 대신 Version_feature2였습니다. 올바른 케이스를 사용하여 지점을 다시 확인한 다음 git pull이 작동했습니다.


2
이것도 내 문제로 밝혀졌습니다. 상당히 길거나 복잡한 브랜치 이름에는 명확하지 않아도됩니다.
Håkon K. Olafsen

6

이 오류는 원래 지점 이름에 일부 문제가있는 경우에도 수신 될 수 있습니다.

예를 들어, origin branch is team1-Team이고 로컬 분기는로 체크 아웃되었습니다 team1-team. 그런 다음이 T에서 -Teamt에서이 -team같은 오류가 발생할 수 있습니다. 이것은 내 경우에 일어났다. 따라서 원래 분기 이름으로 로컬 이름을 변경하면 오류가 해결되었습니다.


6

필자의 경우 원격 지점에서 초기 커밋이 부족했기 때문에 로컬 지점에서 가져올 항목을 찾지 못하여 오류 메시지가 표시되었습니다.

나는했다 :

git commit -m 'first commit' // on remote branch
git pull // on local branch

4

실제 원인이 디스크가 가득 찼을 때 비슷한 오류가 발생했습니다. 일부 파일을 삭제 한 후 git pull예상대로 작동하기 시작했습니다.


4

이 문제가 계속 발생했습니다. 필자의 경우 분기 이름의 대소 문자 차이에 대한 @Jerreck의 의견 이이 오류의 원인이었습니다. 일부 Windows 도구는 대소 문자를 구분하지 않습니다.

git에서 대소 문자 구분을 끄려면 다음 명령을 실행하십시오.

git config --global core.ignorecase true

이는 분기 이름 이상에 영향을 미칩니다. 예를 들어, 동일한 디렉토리에 "Foo.h"및 "foo.h"가있는 경우 (Windows 용 소프트웨어를 빌드 할 때 좋은 아이디어는 아님) 대소 문자 구분을 해제 할 수 없습니다.


2

누군가 원격에서 지점을 삭제했는지 확인하십시오.


1

제 경우에는 현재 지점이 파생 된 원래 지점을 삭제했습니다. 그래서 .git / config 파일에서 나는 가지고 있었다 :

[branch "simil2.1.12"]
    remote = origin
    merge = refs/heads/simil2.0.5
    rebase = false

simil2.0.5가 삭제되었습니다. 나는 그것을 같은 지점 이름으로 바꿨다.

[branch "simil2.1.12"]
    remote = origin
    merge = refs/heads/simil2.1.12
    rebase = false

그리고 그것은 효과가 있었다


1

다음을 실행하여 로컬 지점과 원격 지점을 쉽게 연결할 수 있습니다.

git checkout <your-local-branch>
git branch --set-upstream-to=origin/<correct-remote-branch> <your-local-branch>
git pull

0

나를 위해 이것은 웹 인터페이스를 사용하여 브랜치 dev를 마스터에 병합 한 다음 dev 브랜치에서 열린 VSCode를 사용하여 동기화 / 풀을 시도했기 때문에 발생했습니다.

git pull
Your configuration specifies to merge with the ref 'refs/heads/dev'
from the remote, but no such ref was fetched.'

refs / heads / dev를 찾지 못하는 것이 합리적입니다. 로컬 폴더를 삭제하고 다시 복제하는 것이 더 쉬웠습니다.


0

디스크가 가득 찼을 때 "git pull"을 수행 할 때 정확히이 오류가 발생했습니다. 약간의 공간을 만들었고 모두 잘 작동하기 시작했습니다.


0

~/.gitconfig홈 폴더에서 파일을 편집 할 수 있습니다 . 여기에 모든 --global 설정이 저장됩니다.

또는 저장소 URL로 git config --global --unset-all remote.origin.url실행 한 후 사용하십시오 git fetch.


0

나는 현재 지점이 dev와 동일한 문제에 직면하고 있었고 MR 지점을 확인하고 그 후 git pull을하고있었습니다. 내가 취하는 쉬운 해결 방법은 MR Branch에 대한 새 폴더를 만들고 거기에 git pull을 수행 한 다음 git clone을 수행하는 것입니다.

기본적으로 코드를 다른 지점으로 푸시하기 위해 다른 폴더를 유지 관리했습니다.


0

올바른 사례를 사용하지 않았을 때 동일한 오류가 발생했습니다. '통합'을 체크 아웃 할 수 있습니다. 힘내가 git pull지점을 업데이트 하기 위해 수행하도록 지시했습니다 . 나는 그렇게했지만 언급 된 오류를 받았다. 올바른 지점 이름은 대문자 'I'가있는 'Integration'입니다. 그 지점을 체크 아웃하고 당겨도 문제없이 작동했습니다.


-2

다른 풀이 작동하면 인터넷이 연결되지 않았 음을 의미합니다.


다수의 다운 보트가 있지만이 오류가 발생하는 원인입니다. 나는 인터넷을 가지고 있지만 내 자식 서버에 대한 VPN을 잃어 버렸습니다. VPN에 다시 연결 한 후 풀이 제대로 작동했습니다.
벤 서리
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.