답변:
"병합 할 수없는 것" 은 어떻게 발생합니까? 이 오류는 존재하지 않는 분기를 가져 오려고하기 때문에 분기 이름의 오타에서 발생할 수 있습니다.
이것이 문제가 아닌 경우 (내 경우와 같이) 병합하려는 분기의 로컬 사본이 없을 수 있습니다. 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
Git requires local knowledge of both branches in order to merge those branches
원격 업스트림에서 끌어 올 때 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
.
git remote add upstream
나를 위해 그것을 해결 I 누락 된 중요한 일이었다. 포크가 어디에서 포크되었는지 자동으로 알고 있다고 가정하는 것이 일반적인 실수라고 생각합니다.
나는이 문제도 가지고 있었다. 지점은 '사용자 이름 / 마스터'처럼 보 였는데, 내가 정의한 원격 주소처럼 git을 혼동하는 것처럼 보였습니다. 이것을 사용하는 나를 위해
git merge origin/username/master
완벽하게 잘 작동했습니다.
origin/
원격 지점의 이름 앞에도 넣어야했습니다 .
/
합니다.
이 답변은 위의 질문과 관련이 없지만 비슷한 문제가 발생하여 누군가에게 유용 할 수 있습니다. 아래와 같이 기능 분기를 마스터로 병합하려고합니다.
$ git merge fix-load
이 때문에 다음과 같은 오류 메시지가 나타납니다.
병합 : 수정로드-병합 할 수있는 것이 아닙니다.
나는 모든 솔루션을 살펴 보았지만 어느 것도 효과가 없었습니다.
마지막으로 문제의 원인은 내 지사 이름의 철자 실수라는 것을 깨달았습니다 (실제로 병합 지사 이름은입니다 fix-loads
).
git merge origin/fix-loads
보았습니다.
병합하려는 분기가 로컬 저장소에 없기 때문에이 오류가 발생합니다.
따라서 먼저 다음 명령으로 마스터 브랜치로 병합하려는 브 래치를 체크 아웃하십시오.
git checkout branch_name_to_merge
그런 다음 다음 명령으로 마스터 분기와 병합하십시오.
git merge branch_name_to_merge
checkout
분기 로 이동해야합니다
이 오류는 변경 사항을 병합하려는 지점 (예 : branch-name)이 로컬에 없기 때문에 지점을 체크 아웃하고 로컬 변경 사항을 가져와야합니다. 마스터 브랜치에 체크 아웃하고 페치 한 후 다음 단계를 수행하십시오.
git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-name
참조가 포함 된 문자열이 다른 Git 명령 (또는 그 문제에 대한 다른 쉘 명령)에 의해 생성 된 경우 끝에 캐리지가 포함되어 있지 않은지 확인하십시오. 문자열을 "git merge"로 전달하기 전에 스트립을 제거해야합니다.
오류 메시지가 두 줄로 표시되므로 이러한 상황이 발생하면 매우 분명합니다.
merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
- not something we can merge
분기 이름에 쉼표 (,)가 있기 때문에이 오류가 발생했습니다. 로컬 브랜치를 삭제 한 다음 쉼표없이 새 이름으로 다시 확인했습니다. 성공적으로 병합 할 수있었습니다.
후손 : AxeEffect와 같이 말했다. 오타가없는 경우 로컬 지점 이름에 쉼표 나 아포스트로피와 같은 말도 안되는 문자가 있는지 확인하십시오. 정확히 나에게 지금 일어났다.
이상하게 들릴지 모르지만 git 이메일과 이름을 설정해야합니다.
git config --global user.email "MY@EMAIL.COM"
git config --global user.name "FIRST_NAME LAST_NAME"
마스터가있는 작업 트리가 있었고 다른 지점이 두 개의 다른 작업 폴더에서 체크 아웃되었습니다.
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
git fetch
원격 지점을 합치기 전에 먼저해야했다.