Je viens de rencontrer un problème lors de la fusion d'une branche dans master dans git. D'abord, j'ai obtenu le nom de la branche en exécutant git ls-remote
. Appelons cette branche "nom-branche". J'ai alors exécuté la commande git merge branch-name
et obtenu le résultat suivant:
fatal: branch-name - not something we can merge
Comment puis-je résoudre cette erreur?
Comme indiqué dans comment "nous ne pouvons pas fusionner quelque chose"? , cette erreur peut provenir d'une faute de frappe dans le nom de la branche, car vous essayez d'extraire une branche qui n'existe pas.
Si ce n'est pas le problème (comme dans mon cas), il est probable que vous ne disposiez pas d'une copie locale de la branche que vous souhaitez fusionner. Git nécessite une connaissance locale des deux branches pour fusionner ces branches. Vous pouvez résoudre ce problème en sélectionnant la branche à fusionner, puis en revenant à la branche dans laquelle vous souhaitez fusionner.
git checkout branch-name
git checkout master
git merge branch-name
Cela devrait fonctionner, mais si vous recevez une erreur disant
error: pathspec 'remote-name/branch-name' did not match any file(s) known to git.
vous devez récupérer la télécommande (probablement, mais pas nécessairement, "Origine") avant de vérifier la branche:
git fetch remote-name
C'est une suggestion idiote, mais assurez-vous qu'il n'y a pas de faute de frappe dans le nom de la branche!
Lorsque vous extrayez depuis une source distante en amont, git fetch --all
a fait le tour pour moi:
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]
Dans d'autres cas, j'ai constaté que l'erreur "Impossible de fusionner" se produirait également si la branche distante (Origin, en amont) n'existait pas. Cela peut sembler évident, mais vous pouvez vous retrouver à faire git merge Origin/develop
sur un dépôt qui n'a que master
.
J'ai eu ce problème aussi. La branche ressemblait à 'nom d'utilisateur/maître', ce qui semblait confondre git car elle ressemblait à une adresse distante que j'ai définie. Pour moi en utilisant cela
git merge Origin/username/master
a fonctionné parfaitement bien.
La méthode ci-dessous fonctionne pour moi à chaque fois.
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
Cela peut arriver parce que cette succursale ne se trouve pas chez vous. avant de fusionner l'utilisation
git fetch Origin
Cette erreur suggère que la branche à partir de laquelle vous souhaitez fusionner les modifications (c'est-à-dire dans votre cas nom-branche) n'est pas présente dans votre section locale. Vous devez donc extraire la branche et récupérer les modifications locales. Passez à votre branche maîtresse et récupérez, puis suivez les étapes ci-dessous:
git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-name
Vous obtenez cette erreur car la branche que vous souhaitez fusionner n'existe pas sur votre référentiel local.
Donc, vérifiez d’abord le brach que vous voulez fusionner dans la branche principale à l’aide de la commande suivante:
git checkout branch_name_to_merge
Après cela, essayez de le fusionner avec la branche principale à l'aide de la commande suivante:
git merge branch_name_to_merge
Cette réponse n’est pas liée à la question ci-dessus, mais j’ai fait face à un problème similaire, et cela sera peut-être utile à quelqu'un. J'ai fusionné ma branche de fonctionnalité pour maîtriser comme suit:
$ git merge fix-load
J'ai le message d'erreur suivant:
merge: fix-load - pas quelque chose que nous pouvons fusionner
J'ai cherché avant tout des solutions, mais aucune n'a fonctionné.
J'ai trouvé que le problème était une faute d'orthographe sur le nom de ma branche (en fait, le nom de la branche de fusion est fix-loads
).
J'ai eu cette erreur quand j'ai fait un git merge BRANCH_NAME "some commit message"
- J'avais oublié d'ajouter l'indicateur -m pour le message de validation, de sorte que le nom de la branche incluait le commentaire.
Si la chaîne contenant la référence est produite par une autre commande Git (ou toute autre commande Shell, d'ailleurs), assurez-vous qu'elle ne contient pas de chariot de retour à la fin. Vous devrez le dépouiller avant de passer la chaîne à "git merge".
Notez que c'est assez évident lorsque cela se produit, car le message d'erreur est sur 2 lignes:
merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
- not something we can merge
Nous avons eu cette erreur parce que nous avions une virgule (,) dans le nom de la branche. Nous avons supprimé la branche locale, puis l'avons revérifiée sous un nouveau nom sans la virgule. Nous avons pu le fusionner avec succès.
Pour la postérité: comme l'a dit AxeEffect ... si vous n'avez pas de fautes de frappe, vérifiez si le nom de votre branche locale contient des caractères ridicules, tels que des virgules ou des apostrophes. C'est ce qui m'est arrivé tout à l'heure.
Je suggère de vérifier si vous êtes en mesure de basculer vers la branche avec laquelle vous essayez de fusionner.
J'ai eu cette erreur même si la branche avec laquelle je voulais fusionner était dans un référentiel local et qu'il n'y avait pas de fautes d'orthographe.
J'ai ignoré mes modifications locales afin de pouvoir basculer vers la branche (l'option Stash ou commit peut également être préférée). Après cela, je suis revenu à la branche initiale et la fusion a réussi.
À mon avis, j'avais manqué de mapper ma branche locale avec repo à distance. j'ai fait ci-dessous et cela a bien fonctionné.
git checkout master
git remote add Origin https://github.com/yourrepo/project.git
git Push -u Origin master
git pull
git merge myBranch1FromMain
Pour moi, le problème était les "guillemets doubles" dans le message de fusion. Donc, quand j'ai enlevé la double marque, tout a fonctionné comme par magie. J'espère aider quelqu'un. (Désolé pour mon mauvais anglais)
Cela peut sembler étrange, mais n'oubliez pas de configurer votre email et votre nom git:
git config --global user.email "[email protected]"
git config --global user.name "FIRST_NAME LAST_NAME"
Pour moi, le problème est survenu lorsque j'ai essayé ceci:
git merge -s ours --no-commit --allow-unrelated-histories <remote name>/develop
Donc en fait j'aurais dû écrire master
au lieu de develop
, car maître était le nom de la branche de Subtree, pas ma branche réelle.