Hoe de “niet iets dat we kunnen samenvoegen”-fout van git oplost

Ik ben net een probleem tegengekomen bij het samenvoegen van een branch in master in git. Eerst kreeg ik de branchnaam door git ls-remoteuit te voeren. Laten we die tak “branch-name” noemen. Ik heb toen het commando git merge branch-nameuitgevoerd en kreeg het volgende resultaat:

fatal: branch-name - not something we can merge

Hoe los ik deze fout op?


Antwoord 1, autoriteit 100%

Zoals weergegeven in Hoe ontstaat “niet iets dat we kunnen samenvoegen” ?, deze fout kan ontstaan door een typefout in de naam van de vertakking, omdat je probeert een vertakking op te halen die niet bestaat.

Als dat niet het probleem is (zoals in mijn geval), is het waarschijnlijk dat je geen lokale kopie hebt van de branch die je wilt samenvoegen. Git vereist lokale kennis van beide branches om die branches samen te voegen. Je kunt dit oplossen door de branch uit te checken die je wilt mergen en dan terug te gaan naar de branch waarin je wilt mergen.

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

Dit zou moeten werken, maar als je een foutmelding krijgt met de mededeling

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

je moet de afstandsbediening ophalen (waarschijnlijk, maar niet noodzakelijk, “oorsprong”) voordat je de branch uitcheckt:

git fetch remote-name

Antwoord 2, autoriteit 30%

Het is een domme suggestie, maar zorg ervoor dat er geen typefout in de naam van de branch zit!


Antwoord 3, autoriteit 19%

Bij het ophalen van een externe stroomopwaarts, deed git fetch --allhet voor mij:

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]

In andere gevallen ontdekte ik dat de fout “Niet iets dat we kunnen samenvoegen” ook optreedt als de externe (oorsprong, stroomopwaartse) tak niet bestaat. Dit lijkt misschien voor de hand liggend, maar je zou kunnen merken dat je git merge origin/developdoet op een repo die alleen masterheeft.


Antwoord 4, autoriteit 7%

Ik had dit probleem ook. De branch zag eruit als ‘gebruikersnaam/master’ wat git leek te verwarren omdat het eruitzag als een extern adres dat ik definieerde. Voor mij die dit gebruik

git merge origin/username/master

werkte prima.


Antwoord 5, autoriteit 6%

De onderstaande methode werkt elke keer voor mij.

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

Antwoord 6, autoriteit 3%

Het kan gebeuren omdat die branch niet op uw local staat. gebruik voor het samenvoegen

git fetch origin

Antwoord 7, autoriteit 3%

Dit antwoord is niet gerelateerd aan de bovenstaande vraag, maar ik heb een soortgelijk probleem gehad, en misschien is dit nuttig voor iemand. Ik probeer mijn feature branch samen te voegen met master zoals hieronder:

$ git merge fix-load

hiervoor kreeg ik de volgende foutmelding:

merge: fix-load – niet iets dat we kunnen samenvoegen

Ik heb vooral naar alle oplossingen gekeken, maar niet naar de oplossingen die werkten.

Eindelijk realiseerde ik me dat de oorzaak van het probleem een spelfout is in de naam van mijn vertakking (eigenlijk is de naam van de samenvoegvertakking fix-loads).


Antwoord 8, autoriteit 2%

Je krijgt deze foutmelding omdat de branch die je wilt samenvoegen niet bestaat in je lokale repository.

Dus, eerst afrekenen van de Brach die u wilt samenvoegen in hoofdinrichting door de volgende opdracht:

git checkout branch_name_to_merge

Nadat u deze probeert samen te voegen met Master Branch door de volgende opdracht:

git merge branch_name_to_merge

Antwoord 9, Autoriteit 2%

Deze fout suggereert dat de tak vanwaar u wijzigingen wilt samenvoegen (d.w.z. in uw case filiaalnaam) is niet aanwezig in u lokaal, dus u moet de tak uitchecken en de lokale wijzigingen ophalen.
Afrekenen naar uw Master Branch and Fetch, volg dan de onderstaande stappen:

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

Antwoord 10, Autoriteit 2%

U kunt deze foutmelding ook tegenkomen als u niet gebruikt origintrefwoord en het filiaal is niet uniek.

git checkout <to-branch> 
git merge origin/<from-branch>

Antwoord 11

Ik kreeg deze fout toen ik een git merge BRANCH_NAME "some commit message"– Ik zou vergeten zijn de -m-vlag toe te voegen voor het Commit-bericht, dus het dacht dat de taknaam inbegrepen de reactie.


Antwoord 12

Naar mijn mening had ik gemist om mijn lokale filiaal met Remote Repo in kaart te brengen. Ik deed hieronder en het werkte prima.

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

Antwoord 13

Ik had dit probleem vandaag toen ik een andere tak in de mijne samenvoegde na het rechtstreeks van Master, ik moest uitchecken en de tak trillen die ik als eerste samenvoeging was, dan kon ik deze tak succesvol samenvoegen.

git checkout branch-to-merge
git pull
git checkout my-branch-name
git merge branch-to-merge

Antwoord 14

Als de tekenreeks die de verwijzing bevat wordt geproduceerd door een ander Git-commando (of een ander shell-commando wat dat betreft), zorg er dan voor dat het aan het einde geen return-carrousel bevat. Je zult het moeten strippen voordat je de string doorgeeft aan “git merge”.

Merk op dat het vrij duidelijk is wanneer dit gebeurt, omdat de foutmelding op 2 regels staat:

merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
 - not something we can merge

Antwoord 15

We kregen deze fout omdat we een komma (,) in de naam van de vertakking hadden. We hebben de lokale tak verwijderd en opnieuw gecontroleerd onder een nieuwe naam zonder de komma. We hebben het succesvol kunnen samenvoegen.


Antwoord 16

In mijn geval zat het probleem in de filiaalnaam. Mijn nieuwe filiaalnaam bevat haakjes. Zodra ik het hernoemd heb en haakjes heb verwijderd, is het gesorteerd.


Antwoord 17

Voor het nageslacht: zoals AxeEffect zei… als je geen typefouten hebt, controleer dan of je belachelijke tekens in de naam van je lokale filiaal hebt, zoals komma’s of apostrofs. Precies dat overkwam mij zojuist.


Antwoord 18

Ik raad aan om te controleren of je kunt overschakelen naar de branch waarmee je probeert te mergen.

Ik kreeg deze foutmelding hoewel de branch waarmee ik wilde samenvoegen zich in de lokale repository bevond en er geen spelfouten waren.

Ik negeerde mijn lokale wijzigingen zodat ik naar de branch kon overschakelen (Stash of commit kan ook de voorkeur hebben). Hierna schakelde ik terug naar de initiële branch, en de merge was succesvol.


Antwoord 19

De branch die je probeert te mergen kan op dit moment niet door jou worden geïdentificeerd git
dus presteer
git branch
en kijk of de branch die je wilt samenvoegen niet bestaat, zo niet, voer dan uit
git pull
en als je nu git branchdoet, zal de branch nu zichtbaar zijn,
en nu voer je git merge <BranchName>

. uit


Antwoord 20

Ik had hetzelfde probleem. Ik heb het opgelost met de onderstaande opdracht:

git checkout main
git fetch
git checkout branch_name
git fetch
git checkout main
git fetch
git merge branch_name

Antwoord 21

In mijn geval probeerde ik git-opdrachten uit te voeren vanuit een submap van de git-repository.
Zorg ervoor dat dit de map is die je met git hebt geïnitialiseerd en niet de submap.


Antwoord 22

Bij mij deed het probleem zich voor toen ik dit probeerde:

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

Dus eigenlijk had ik mastermoeten schrijven in plaats van develop, omdat master de branchnaam van Subtree was, niet mijn eigenlijke branch.


Antwoord 23

Dit klinkt misschien raar, maar vergeet niet om je git-e-mailadres en -naam in te stellen:

git config --global user.email "[email protected]"
git config --global user.name "FIRST_NAME LAST_NAME"

Antwoord 24

Voor mij was het probleem de ‘dubbele aanhalingstekens’ in het samenvoegbericht. Dus toen ik het dubbele merkteken verwijderde, werkte alles op magische wijze. Ik hoop iemand te helpen. (Sorry voor mijn slechte Engels)


Antwoord 25

Ik had een werkstructuur met master en een andere branch uitgecheckt in twee verschillende werkmappen.

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

Als je alleen de laatste commit moet samenvoegen:

git merge origin/vyas-cr-core 
git push

En hetzelfde is als wat ik altijd heb gedaan:

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

Antwoord 26

Ik had hetzelfde probleem… Ik ben een complete beginner
In mijn geval gebeurde het omdat ik probeerde te doen: git merge random_branch/file.txt
Mijn probleem was opgelost toen ik het bestand.txt terugtrok en alleen de branchnaam (lol) kkfdskfskdfs

git merge random_branchwerkte redelijk goed


Antwoord 27

git rebase the-branch-to-be-merged

Ik heb het probleem opgelost met dit git-commando, maar rebaseis alleen geschikt voor sommige gevallen.


Antwoord 28

Ik weet dat het laat is om te antwoorden, maar ik had ook hetzelfde probleem, dus ik voerde de volgende opdrachten uit

git checkout master

en dan

git pull origin branch-name

Het heeft mijn probleem opgelost

Other episodes