git의 "병합 할 수있는 것이 아닌"오류를 해결하는 방법


291

git에서 브랜치를 master로 병합 할 때 문제가 발생했습니다. 먼저을 실행하여 지점 이름을 얻었습니다 git ls-remote. 이 분기를 "branch-name"이라고하겠습니다. 그런 다음 git merge branch-name명령 을 실행 하고 다음 결과를 얻었습니다.

fatal: branch-name - not something we can merge

이 오류를 어떻게 해결합니까?

답변:


357

"병합 할 수없는 것"어떻게 발생합니까? 이 오류는 존재하지 않는 분기를 가져 오려고하기 때문에 분기 이름의 오타에서 발생할 수 있습니다.

이것이 문제가 아닌 경우 (내 경우와 같이) 병합하려는 분기의 로컬 사본이 없을 수 있습니다. Git은 이들 브랜치를 병합하기 위해 두 브랜치에 대한 로컬 지식이 필요합니다. 병합 할 분기를 체크 아웃 한 다음 병합하려는 분기로 돌아가서이 문제를 해결할 수 있습니다.

git checkout branch-name
git checkout master
git merge branch-name

이것은 작동하지만 오류가 발생하면

error: pathspec 'remote-name/branch-name' did not match any file(s) known to git.

브랜치를 체크 아웃하기 전에 원격 (아마도 "origin")을 가져와야합니다.

git fetch remote-name

3
이것은 새로운 리모컨을 추가 한 후에 나에게 일어났다 – 나는 git fetch원격 지점을 합치기 전에 먼저해야했다.
Jason

원격에서 지점을 가져오고 체크 아웃합니다. 자식이 가져 && 자식 체크 아웃 BRANCHNAME를
6 월 Brosas에게

2
이것은 내가 잘못된 프로젝트에 들어갔을 때 나에게 일어났다 (즉, 내가 병합하고 싶은 지점조차 없었던 다른 저장소였다)
JoelFan

1
명령 행 ( help.github.com/articles/syncing-a-fork ) 에서 포크를 동기화하려는 경우이 오류는 0 단계를 놓 쳤기 때문일 수 있습니다. 0 단계가 표시되지 않습니까? 그렇기 때문에 놓치기 쉬운 이유입니다. "포크를 업스트림 저장소와 동기화하기 전에 Git의 업스트림 저장소를 가리키는 원격을 구성해야합니다." <-이 단계는 0입니다.이 단계를 건너 뛰면 위 오류가 발생하여 Google에 입력했을 수 있습니다. :-)
Steve Bonds

1
Git requires local knowledge of both branches in order to merge those branches
Gangadhar JANNU

97

어리석은 제안이지만 지사 이름에 오타가 없는지 확인하십시오!


4
그리 바보, 분기 아직 (함으로써 알 수없는 로컬) .. 힘내 .. CVS 나 SVN 다르게 일을 인출되지 않았습니다 있다는 사실을 줄일 수있다 "오타"로
클랑

2
분기 이름에 쉼표 (,) 또는 아포스트로피 ( ')와 같은 문자가 포함 된 경우에도 문제가 발생할 수 있습니다.
AxeEffect

또한 여러 저장소에서 동시에 작업하는 경우 특히 올바른 저장소 또는 터미널 창 / 탭에 있는지 확인하십시오.
totymedli

71

원격 업스트림에서 끌어 올 때 git fetch --all나를 위해 트릭을 수행했습니다.

git remote add upstream [url to the original repo]
git checkout [branch to be updated]
git fetch --all
git merge upstream/[branch to be updated]

다른 경우에는 원격 (원점, 업스트림) 분기가 존재하지 않으면 "병합 할 수있는 것이 아닙니다"오류도 발생한다는 것을 알았습니다. 이것은 분명 보일 수 있습니다,하지만 당신은 자신이 일을 찾을 수있는 git merge origin/develop유일한있는 REPO에 master.


5
나는 왜이 답변이 위의 표만큼 많은 표를 얻지 못했는지 모르겠습니다. 'git fetch -all'은 원격 브랜치를 병합하기 전에 일반적으로 실행을 놓치므로 문제를 해결하는 명령입니다.
Dayanand Gowda

2
가져 오기는 자동으로 풀리지 않으므로 수동으로 수행해야합니다. 따라서 페어 페치 (all & pull)는 트릭을 수행합니다.
danielpopa

감사합니다! 는 git remote add upstream나를 위해 그것을 해결 I 누락 된 중요한 일이었다. 포크가 어디에서 포크되었는지 자동으로 알고 있다고 가정하는 것이 일반적인 실수라고 생각합니다.
Brent

23

나는이 문제도 가지고 있었다. 지점은 '사용자 이름 / 마스터'처럼 보 였는데, 내가 정의한 원격 주소처럼 git을 혼동하는 것처럼 보였습니다. 이것을 사용하는 나를 위해

git merge origin/username/master

완벽하게 잘 작동했습니다.


4
나는 origin/원격 지점의 이름 앞에도 넣어야했습니다 .
AsGoodAsItGets a

지점 이름에 슬래시가 있으면이 작업을 수행해야 /합니다.
CTS_AE

21

아래 방법은 매번 나에게 효과적입니다.

git checkout master
git pull
git checkout branch-name-to-be-merged
git pull
git checkout branch-name
git pull
git merge branch-name-to-be-merged

감사합니다. 나는 이것이 근본적으로 올바른 해결책이다. 기본적으로 소스 브랜치를 병합하기 전에 체크 아웃했는지 확인한다.
dps

11

해당 지점이 귀하의 지역에 없기 때문에 발생할 수 있습니다. 사용하기 전에

git fetch origin

8

이 답변은 위의 질문과 관련이 없지만 비슷한 문제가 발생하여 누군가에게 유용 할 수 있습니다. 아래와 같이 기능 분기를 마스터로 병합하려고합니다.

$ git merge fix-load

이 때문에 다음과 같은 오류 메시지가 나타납니다.

병합 : 수정로드-병합 할 수있는 것이 아닙니다.

나는 모든 솔루션을 살펴 보았지만 어느 것도 효과가 없었습니다.

마지막으로 문제의 원인은 내 지사 이름의 철자 실수라는 것을 깨달았습니다 (실제로 병합 지사 이름은입니다 fix-loads).


4
나를 위해 원점을 추가하는 것이 효과가있었습니다. 예를 들어 git merge origin/fix-loads보았습니다.
Ram Patra

7

병합하려는 분기가 로컬 저장소에 없기 때문에이 오류가 발생합니다.

따라서 먼저 다음 명령으로 마스터 브랜치로 병합하려는 브 래치를 체크 아웃하십시오.

git checkout branch_name_to_merge

그런 다음 다음 명령으로 마스터 분기와 병합하십시오.

git merge branch_name_to_merge

2
당신이 당신의 지점의 이름에주의를 기울이지 않는 경우에도 발생할 수 있습니다 (즉 철자가 틀린) :)
매트 Borja

이것은 나를 위해 일했습니다. Git 탭을 사용하여 Atom에서 작업하고 드롭 다운으로 분기를 전환 할 때 때때로 명령 줄과 checkout분기 로 이동해야합니다
nzaleski

7

이 오류는 변경 사항을 병합하려는 지점 (예 : branch-name)이 로컬에 없기 때문에 지점을 체크 아웃하고 로컬 변경 사항을 가져와야합니다. 마스터 브랜치에 체크 아웃하고 페치 한 후 다음 단계를 수행하십시오.

git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-name

나는 까다 롭고 오류 메시지 가 위와 같은 것을 제안 한다고 생각하지 않는다고 말합니다 :-)
Brian Agnew

3

git merge BRANCH_NAME "some commit message"커밋 메시지에 -m 플래그를 추가하는 것을 잊어 버렸을 때이 오류가 발생 하여 분기 이름에 주석이 포함되었다고 생각했습니다.


3

내 의견으로는 나는 원격 지사로 내 로컬 지점을 매핑하는 것을 놓쳤다. 나는 아래에서했고 잘 작동했다.

git checkout master
git remote add origin https://github.com/yourrepo/project.git
git push -u origin master
git pull
git merge myBranch1FromMain

2

참조가 포함 된 문자열이 다른 Git 명령 (또는 그 문제에 대한 다른 쉘 명령)에 의해 생성 된 경우 끝에 캐리지가 포함되어 있지 않은지 확인하십시오. 문자열을 "git merge"로 전달하기 전에 스트립을 제거해야합니다.

오류 메시지가 두 줄로 표시되므로 이러한 상황이 발생하면 매우 분명합니다.

merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
 - not something we can merge

3
답을 다운 보트 할 때 의견을 제공하십시오. 어쩌면 원래 포스터의 문제는 아니지만 오류 메시지의 원인 일 수 있습니다 (문제가 직접 있습니다).
ocroquette

2

분기 이름에 쉼표 (,)가 있기 때문에이 오류가 발생했습니다. 로컬 브랜치를 삭제 한 다음 쉼표없이 새 이름으로 다시 확인했습니다. 성공적으로 병합 할 수있었습니다.


밑줄도 문제가있는 것 같습니다. +1
Anders Lindén

1
@ AndersLindén
nzaleski의

괄호도 문제가되었습니다 ... + 1
Pablo Ezequiel

1

후손 : AxeEffect와 같이 말했다. 오타가없는 경우 로컬 지점 이름에 쉼표 나 아포스트로피와 같은 말도 안되는 문자가 있는지 확인하십시오. 정확히 나에게 지금 일어났다.


또는 밑줄. +1
Anders Lindén

1

병합하려는 지점으로 전환 할 수 있는지 확인하는 것이 좋습니다.

병합하려는 지점이 로컬 저장소에 있고 맞춤법 오류가 없어도이 오류가 발생했습니다.

지점으로 전환 할 수 있도록 로컬 변경 사항을 무시했습니다 (스 태쉬 또는 커밋도 선호 할 수 있음). 이 후 초기 지점으로 다시 전환하여 병합에 성공했습니다.


0

나를 위해이 문제를 시도했을 때 문제가 발생했습니다.

git merge -s ours --no-commit --allow-unrelated-histories <remote name>/develop

실제로 master master대신 develop내 실제 브랜치가 아닌 Subtree의 브랜치 이름이기 때문에 대신에 작성해야했습니다 .


0

이상하게 들릴지 모르지만 git 이메일과 이름을 설정해야합니다.

git config --global user.email "MY@EMAIL.COM"
git config --global user.name "FIRST_NAME LAST_NAME"

0

나에게 문제는 병합 메시지의 '큰 따옴표'였습니다. 이중 마크를 제거하면 모든 것이 마술처럼 작동했습니다. 누군가를 돕고 싶습니다. (내 영어 실력이 미안해)


0

마스터가있는 작업 트리가 있었고 다른 지점이 두 개의 다른 작업 폴더에서 체크 아웃되었습니다.

PS C:\rhipheusADO\Build> git worktree list
C:/rhipheusADO/Build         7d32e6e [vyas-cr-core]
C:/rhipheusADO/Build-master  91d418c [master]

PS C:\rhipheusADO\Build> cd ..\Build-master\

PS C:\rhipheusADO\Build-master> git merge 7d32e6e #Or any other intermediary commits
Updating 91d418c..7d32e6e
Fast-forward
 Pipeline/CR-MultiPool/azure-pipelines-auc.yml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

PS C:\rhipheusADO\Build-master> git ls-remote
From https://myorg.visualstudio.com/HelloWorldApp/_git/Build
53060bac18f9d4e7c619e5170c436e6049b63f25        HEAD
7d32e6ec76d5a5271caebc2555d5a3a84b703954        refs/heads/vyas-cr-core 

PS C:\rhipheusADO\Build-master> git merge 7d32e6ec76d5a5271caebc2555d5a3a84b703954
Already up-to-date

PS C:\rhipheusADO\Build>  git push
Total 0 (delta 0), reused 0 (delta 0)
To https://myorg.visualstudio.com/HelloWorldApp/_git/Build
   91d418c..7d32e6e  master -> master

최신 커밋을 병합 해야하는 경우 :

git merge origin/vyas-cr-core 
git push

그리고 내가 항상 한 것과 같습니다.

git checkout master # This is needed if you're not using worktrees
git pull origin vyas-cr-core
git push

0

병합하려고하는 지점은 현재 git에 의해 식별되지 않을 수 있으므로 수행 git branch 하려는 병합 지점이 존재하지 않는지 git pull 확인하십시오 git branch. 그리고 지금 당신은 수행git merge <BranchName>

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