Ik ben net een probleem tegengekomen bij het samenvoegen van een branch in master in git. Eerst kreeg ik de branchnaam door git ls-remote
uit te voeren. Laten we die tak “branch-name” noemen. Ik heb toen het commando git merge branch-name
uitgevoerd 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 --all
het 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/develop
doet op een repo die alleen master
heeft.
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 origin
trefwoord 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 branch
doet, 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 master
moeten 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_branch
werkte redelijk goed
Antwoord 27
git rebase the-branch-to-be-merged
Ik heb het probleem opgelost met dit git-commando, maar rebase
is 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