원격 분기로 푸시 할 수 없습니다. 분기로 해결할 수 없습니다.


110

Bitbucket 또는 Github에서 내 저장소를 마이그레이션했습니다. 나는 이것이 중요하다고 생각하지 않지만 유일한 차이점은 ... 잠시 동안 두 개의 리모컨을 설정했습니다.

origin: bitbucket
github: github

그런 다음 github에 대한 원점을 모두 제거했습니다.

git remote remove origin
git remote remove github
git remote add origin https://github....

개발 분기의 테스트 푸시 :

git push origin develop

모든 것이 최신 상태입니다. 좋습니다.

평소대로 일부 작업에 대한 새 분기를 만듭니다.

git checkout -b Feature/Name

파일을 한두 개 업데이트하십시오. 원격으로 푸시 시도 :

git push origin Feature/Name

이로 인해 오류가 발생합니다.

치명적 : 기능 / 이름을 분기로 확인할 수 없습니다.

이 문제에 대해 온라인으로 검색하고 HEAD가 올바른지 확인하는 방법에 대한 정보를 찾고, 내 분기 이름 대소 문자가 올바른지 확인하는 방법에 대한 정보를 찾아보십시오 (이 시점에서 분기는 아직 원격에 존재하지 않습니다). 해결할 수 없습니다.

다음 명령을 실행했습니다.

git push --all -u

이것은 내 Feature/Name지점을 github로 가져 왔지만 여전히 이전과 동일한 동작을 보입니다.

git push origin develop
git push origin Feature/Name

첫 번째는 작동하고 두 번째는 동일한 오류를 발생시킵니다.

이 오류가 발생하는 이유를 알 수 없습니다. 어떤 아이디어?


1
당신은 어떤 지점에 있었 Feature/Name습니까? 당신은 확실히 Feature/Name 존재하고는이 지점을 체크 아웃입니까? 으로 확인하십시오 git branch.
Schwern에

@Schwern-개발, 테스트 및 마스터의 세 가지 분기 (로컬 및 원격) 만 존재했습니다. 브랜치를 정리하고 다시 개발하기 위해 병합하면 로컬로 (해당되는 경우 원격으로) 삭제합니다. 나는 내 세 명만 있다고 확신합니다. 한동안 프로젝트를 열지 않았고 가장 먼저 한 일은 느슨한 지점이 없는지 확인하고 확인하는 것이 었습니다.
jleach

로컬에 존재 git branch하는지 확인하기 위해 실행 Feature/Name했습니까? GUI 또는 IDE를 신뢰하지 마십시오. 또한 사건을 옳게 얻었습니까?
Schwern에

어때요 git push origin Feature/Name:Feature/Name?
ElpieKay

이제 화 났어요 ... 처음에는 왜 작동하지 않았는지 모르겠지만 사용 후 git push --all -ugithub에 새 브랜치가 있지만 여전히 로컬에서 푸시 할 수 없었습니다. 여기에 무슨 일이 있었는지 ... 실제 브랜치 이름은 SQLMigration/ReportFixes이고 github에있는 것은 SqlMigration/ReportFixes. 이제 할 수 있습니다 git push origin SqlMigration/ReportFixes-whytf github가 나를 위해 대소 문자를 변경합니까? 아.
jleach

답변:


379

나도이 문제를 겪고 있었는데 그것은 나를 미치게 만들었다. 나는 뭔가를 가지고 feature/name있지만 git branch -a보여주었습니다 FEATURE/name. 브랜치의 이름을 바꾸고 삭제하고 다시 생성해도 아무 효과가 없었습니다. 마지막으로 수정 한 사항 :

들어가다 .git/refs/heads

당신은 볼 수 FEATURE폴더에 있습니다. 이름을 feature.


4
이것은 저에게 정답이었습니다. Windows에서 gitbash를 사용하고 있으며 기능 / 일부 기능 및 기능 / 일부 기능을 만들었습니다.
Dylan McCurry

이것은 정답으로 표시되어야합니다. 나를 도와 주었다. 감사!
GuiDoody

21
이 답변에 대해 맥주를 빚지고 있습니다! : D
보이 타

1
와, 좋은 캐치. 많은 시간을 절약했습니다. 감사 !
Piyush

2
@Pegues-완료. 이 대답은 문제가 발생한 지 오래 전에 존재하지 않았다고 생각하지만 인기있는 대답 인 것 같습니다.
jleach

30

내 자신의 테스트와 OP의 의견 에 따라 어느 시점에서 지점 이름의 대 / 소문자를 어리석은 것 같습니다.

첫째, OP가 OS X 또는 Windows와 같은 대소 문자를 구분하지 않는 운영 체제에 있다고 생각합니다. 그런 다음 그들은 이렇게 했어요 ...

$ git checkout -b SQLMigration/ReportFixes
Switched to a new branch 'SQLMigration/ReportFixes'

$ git push origin SqlMigration/ReportFixes
fatal: SqlMigration/ReportFixes cannot be resolved to branch.

대소 문자 차이에 유의하십시오. 또한 오류는 이름을 오타하는 경우와 매우 다릅니다.

$ git push origin SQLMigration/ReportFixme
error: src refspec SQLMigration/ReportFixme does not match any.
error: failed to push some refs to 'git@github.com:schwern/testing123.git'

Github는 파일 시스템을 사용하여 브랜치 이름을 저장하기 때문에 .git/refs/heads/SqlMigration/ReportFixes. 파일 시스템은 대소 문자를 구분하지 않기 때문에 성공적으로 열리지 .git/refs/heads/SqlMigration/ReportFixes만 브랜치 이름을 대소 문자를 구분하여 비교하려고하는데 일치하지 않으면 혼란스러워집니다.

그들이 어떻게 지역 지점이 SQLMigration/ReportFixes있고 원격 지점이 있는 상태가 SqlMigration/ReportFixes되었는지 는 잘 모르겠습니다. 나는 Github가 원격 지점 이름을 망쳤다 고 생각하지 않습니다. 가장 간단한 설명은 푸시 액세스 권한이있는 다른 사람이 원격 지점 이름을 변경 한 것입니다. 그렇지 않으면 어떤 시점에서 오타로 리모컨을 만들 수있는 작업을 수행했습니다. 쉘 히스토리를 확인 history | grep -i sqlmigration/reportfixes하면 대소 문자를 잘못 입력 한 명령을 찾을 수있을 것입니다.


OS X에서 브랜치 이름의 대소 문자를 변경했을 때이 문제가 발생했습니다. 다시 변경하면 문제가 해결되었습니다.
Steven C. Howell

이것은 AM-xxx / some_branch와 같은 이전 브랜치가 있고 AM-XXX / another_branch와 같은 다른 브랜치를 만들 때도 발생할 수 있습니다 .git은 다른 경우를 로컬로 허용하고 두 가지를 원격으로 페어링하는 데 실패합니다.
timpwbaker

네, 할 수 체크 아웃 잘못된 혼합 된 경우가 아니라 체크인 단지의 지저분한 ...
javadba

12

Git을 사용하면 대 / 소문자가 다른 현재 분기를 확인할 수 있으며 원격에서 참조를 찾지 못합니다.

어려운 길을 찾았습니다.


1
이것은 내 문제였습니다. 신속하게 수행하고 > git branch분기 옆에 *가 있는지 확인하는 것이 좋습니다 .
Andy Danger Gagne

이것은 나에게도 일어났습니다. @AndyDangerGagne, 당신이 이것을 제안해서 기쁩니다. 내가 있던 지점 옆에 *가 없어서 이번에는 소문자로 다시 확인했습니다.
Cognitiaclaeves

9

비슷한 일이 저에게 일어났습니다. "Feat / name"과 같은 브랜치를 만들었습니다. 나는 그것을 사용하여 밀어 보았습니다.

git push --set-upstream origin 기능 / 이름

나는 당신과 같은 치명적인 오류가 있습니다.

치명적 : 기능 / 이름을 분기로 확인할 수 없습니다.

이 문제를 해결하기 위해 영향을받은 파일이 거의 없었기 때문에 새 분기를 만들었습니다. 그런 다음 잘못된 분기를 삭제하기 위해 분기를 나열했는데 모자없이 표시되었습니다.

  • 업적 / 이름

나는 전에 모자를 사용했지만 첫 번째 caracter에는 한 번도 사용하지 않았습니다. 자식이 좋아하지 않는 것 같습니다 ...


D : 저도 같은 경우 THX 있었다
abdoutelb

5

대소 문자를 구분하므로 생성 된 브랜치와 브랜치로 푸시가 모두 동일한 대문자인지 확인하십시오.

예:

git checkout -b "TASK-135-hello-world"

잘못된 방법 :

git push origin task-135-hello-world     #FATAL: task-135-hello-world cannot be resolved to branch

올바른 방법 :

git push origin TASK-135-hello-world

2

git fetch를 실행하는 것을 잊었나요? 원격 저장소에서 데이터를 가져와야합니다! 실행 해보세요git fetch remote/branch


2

제 경우에는 대문자로 브랜치 폴더 (또는 그 이름이 무엇이든간에)가 있었는데, 대소 문자가 다른 새 폴더 (소문자)를 만들었지 만 실제로 git은 대문자로 브랜치를 만듭니다.

feature-ABC/branch1이전과 같이 브랜치 를 만들고 밀어 넣었습니다. 그런 다음 브랜치를 생성하고 feature-abc/branch2(소문자 ABC에주의) 원격 사용을 시도 git push --set-upstream origin feature-abc/branch2하여 'cannot be resolved to branch'오류가 발생합니다. 그래서 나는 git branch그것이 나를 위해 feature-ABC/branch2대신 실제로 만들어 졌다는 것을 봅니다 feature-abc/branch1. 나는 다시 체크 아웃 git checkout feature-ABC/feature2하고 그것을 feature-ABC/feature2해결하기 위해 대문자 ( )를 사용하여 밀어 넣 습니다.


2

나는 잘못된 케이싱으로 분기로 인해 발생한 동일한 문제에 직면했습니다. git feature/Name대신 잘못된 대 / 소문자를 사용하여 분기로 전환 할 수 feature/name있습니다. 위에 나열된 것보다 더 쉬운 해결책을 찾았습니다.

  • '기능 / 이름'에 대한 변경 사항을 커밋
  • git checkout master (or develop)
  • git checkout feature/name <올바른 대 / 소문자
  • git push

2

Windows 10 에서 GitBash 대신 cmd 를 사용하여이 문제를 해결했습니다 .

대소 문자와 git 및 명령 줄이 대소 문자를 처리하는 방법과 관련이 있습니다.


1

비슷한 브랜치를 만들었지 만 대소 문자 구분이 다르면 다음을 실행해야합니다.

git branch -D <name-of-different-case-branch>

다시 밀어보세요.


1

@Ty Le의 약간 수정 된 답변 :

파일 변경이 필요하지 않았습니다. 'Feature / ...'라는 브랜치가 있었고 업스트림을 푸시하는 동안 제목을 'feature / ...'로 변경했습니다 (첫 글자의 대소 문자가 낮은 글자로 변경되었습니다). ).


0

방금이 문제가 발생했고 정상적인 분기가로 시작 pb-3.1-12345/namebranch하지만 실수로 처음 두 글자를 대문자로 입력했습니다 PB-3.1/12345/namebranch. 소문자를 사용하도록 브랜치의 이름을 바꾼 후 브랜치를 만들 수 있습니다.


0

나를 위해 나는 분기 이름을

Rel4.6 / 버그 / 일부 짧은 설명

내가해야 할 일은 사용할 때

git push origin R elx.x / bug / Some-short-description

쓰기

git push origin r elx.x / bug / Some-short-description

rel에서 소문자 r을 사용하여 가지를 만들 때 사용했습니다.

그래서이 문제의 원인은 무엇입니까?

.git/refs/heads내가 찾은 콘텐츠를 나열했을 때

drwxr-xr-x  4 eslam_khoga  staff   128B Sep 22 20:22 relx.x

하지만 아니 Relx.x!

그리고 그 안에 bug그리고 bug내 지점의 이름 안에 .

그래서 git은 이름은 같지만 대소 문자가 다른 디렉토리를 만들려고합니다.

그러나 시스템은 대소 문자를 구분하지 않습니다.

이것이이 문제의 원인입니다!


0

다른 케이스에 동일한 문제가있었습니다.

개발 (또는 마스터)에 체크 아웃 한 다음 이름 (잘못된 이름)을 테스트와 같은 다른 이름으로 변경했습니다.

  • git checkout 개발
  • git branch -m 잘못된 이름 테스트

그런 다음 이름을 다시 올바른 이름으로 변경하십시오.

  • git branch -m test right-name

그런 다음 오른쪽 이름 지점으로 결제하십시오.

  • git checkout right-name

그런 다음 원격 지점으로 푸시하기 위해 노력했습니다.

  • git push origin right-name

0

나에게 문제는 git과 macOS 파일 시스템이 두 가지 다른 대소 문자 구분으로 설정되어 있다는 것입니다. 내 Mac은 APFS / Is 대소 문자 구분 : 아니요 ,하지만 Xcode 이미지 자산 이름 지정과 관련된 이상한 문제를 해결하기 위해 어떤 시점에서 내 자식 설정을 뒤집 었으므로 git config --global core.ignorecase false . 다시 뒤집어서 설정을 정렬하고 가지를 다시 만들고 밀어서 제 궤도로 돌아 왔습니다.

git config --global core.ignorecase true

크레딧 : https://www.hanselman.com/blog/GitIsCasesensitiveAndYourFilesystemMayNotBeWeirdFolderMergingOnWindows.aspx


0

나는 같은 문제가 있었지만 해결되었습니다. 지점 이름이 대소 문자를 구분한다는 것을 깨달았습니다. GitHub의 메인 브랜치는 'master'이고 내 gitbash 명령에서는 'Master'입니다. 로컬 저장소의 Master 이름을 master로 변경했는데 작동했습니다! 😀😀


0

나는 같은 문제에 부딪 쳤고 지점을 확인하는 동안 케이스가 섞인 것을 발견했습니다. branchName대신 체크 아웃 BranchName했고 원격으로 푸시하려고 할 때 동일한 오류가 발생했습니다.

수정 사항 :

git push --set-upstream origin BranchName

업스트림을 올바른 이름으로 설정하면 github에서 올바른 브랜치가 업데이트되었고 다음으로 올바른 브랜치 이름을 확인할 수있었습니다.

git checkout BranchName 

그리고 마지막 푸시로 최신 상태 여야합니다.


-1

로컬 분기에있는 경우 분기 "기능 / 이름"을 "기능 / 이름"으로 바꿀 수 있습니다.

git -m feature/Name

git push다른 브랜치 (예 : 개발)에서 체크 아웃하고 이름이 변경된 브랜치로 돌아가는 데 문제가있는 경우

git checkout feature/Name

다시 시도하십시오 git push

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