Git : 경고 : refname 'master'가 모호합니다.


83

나는 여기에서 같은 질문을하는 몇몇 사람들을 보았지만 그들의 조언이 나에게 적용되지 않는 것 같습니다. 제목에 경고가 표시되지만 "master"라는 태그가 없습니다. 이것은 다음의 결과입니다 git branch -a.

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

여기서 무엇이 잘못 될 수 있는지 아십니까? 나는 지금 git을 몇 달 동안 사용하지 않았기 때문에,이 모호함이 미래에 repo를 엉망으로 만들지 않을까 걱정합니다.


2
어떤 명령이 경고를 발행합니까?
CharlesB

1
stackoverflow.com/a/12225704/6309에 언급 된 가능한 '마스터'목록이 도움이 될까요? A git checkout heads/master가 작동해야합니다 (경고없이)
VonC

2
의 출력을 보여주세요 git show-ref.
CB Bailey

@CharlesBailey 여기 지연에 대해 죄송하지만의 출력은 git show-ref여기에 맞지 않을 것입니다. "master"로 끝나는 두 줄이 관련 될 수 있다고 생각합니다 : refs / remotes / origin / master, refs / heads / master
Tim

답변:


97

나를 위해 "update-ref"명령을 잘못 실행했을 때이 경고의 소스를 훨씬 더 일찍 추적했습니다. 첫 번째 인수에 전체 refs / heads / mybranchname 경로를 지정하는 것을 잊은 경우 .git / mybranchname 파일이 생성되고 나중에 해당 분기로 전환하려고 할 때이 경고가 표시됩니다.

.git / mybranchname을 삭제하면 해결됩니다. 예 :

rm .git/master

참고로 update-ref 명령의 올바른 형식은 다음과 같습니다.

git update-ref refs/heads/mybranchname mytargetbranch

"refs / heads"부분을 잊지 마세요!

또한 update-ref에 대한 가장 일반적인 사용 사례는 단순히 분기를 수동으로 이동하여 다른 커밋을 가리 키도록하는 것입니다. 이렇게하면 더 간단한 구문을 찾았습니다.

git branch -f myBranchToMove destinationBranchOrHash

이 구문은 오류가 발생하기 쉬운 refs / heads 경로 한정자가 필요하지 않기 때문에 더 쉽습니다.


4
나는 똑같은 일을했습니다. 이 명령은 아무 일도하지 않는 것 같았 기 때문에 "refs / heads"부분을 추가했고 .git 디렉토리에 잔여 물이 남아 있다는 사실을 깨닫지 못했습니다.
John Alexander

git update-ref -d master중복 참조를 생성 한 것이 update-ref 명령이라는 것을 알게되면 작동합니다.
Dan Berindei

커밋간에 브랜치를 이동하려는 경우 브랜치를 삭제 (브랜치 -d)하고 다른 커밋에서 다시 생성 (체크 아웃 -b)하는 것이 좋습니다. 심판을 조작 할 필요가 없습니다.
Ytsen de Boer

26

" Git : refname ' master'is ambiguous "에 자세히 설명 된대로 heads/mastergit repo 내의 다음 네임 스페이스 중 하나에 다른 마스터가 있음을 의미합니다 .

refs/<refname> 
refs/tags/<refname>
refs/heads/<refname>
refs/remotes/<refname>
refs/remotes/<refname>/HEAD

또는 Magnus답변./<refname> 에서 언급했듯이 .


2
또는 ./<refname>Magnus가 언급 한대로. (이것은 내 경우에는 WAS)
신경 끄시

7

향후 참조를 위해 동일한 문제가 발생했으며 결국 여기에 설명 된 솔루션이 작동하게되었습니다 . 기본적으로 Git: warning: refname 'xxx' is ambiguous경고를 받으면 다음을 사용 git show-ref xxx하여 xxx분기에 대한 참조를 확인하고 충돌이있는 항목을 확인할 수 있습니다.

내 시나리오에서는 xxx이름이 같은 태그 와 분기 이름이었습니다. 태그가 실수로 만들어졌고 서버에서 제거되었으므로 서버와 일치하도록 로컬 태그를 업데이트하기 만하면되었습니다 git fetch -p -P. 이 명령은 여기 에 자세히 설명되어 있습니다.



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