J'ai migré mes dépôts depuis Bitbucket ou Github. Je ne pense pas que cela compte mais c'est la seule chose différente ... Pendant un petit moment, j'avais installé deux télécommandes:
origin: bitbucket
github: github
Ensuite, j'ai supprimé les deux et ai pointé l'origine vers github:
git remote remove origin
git remote remove github
git remote add origin https://github....
Test push de la branche de développement:
git push origin develop
Tout est à jour, ok, bien.
Créez une nouvelle branche pour certains travaux comme d'habitude:
git checkout -b Feature/Name
Mettez à jour un fichier ou deux. Tentative de pousser vers la télécommande:
git push origin Feature/Name
Cela entraîne l'erreur:
fatal: la fonction / le nom ne peut pas être résolu en branche
Recherchez ce problème en ligne, trouvez des informations pour vérifier que HEAD est correct, d'autres pour vous assurer que la casse de mon nom de branche est correcte (bien qu'à ce stade, la branche n'existe pas encore sur la télécommande). Impossible de résoudre.
Exécuté cette commande:
git push --all -u
Cela a amené ma Feature/Name
branche à github, mais j'ai toujours le même comportement que précédemment:
git push origin develop
git push origin Feature/Name
Le premier fonctionne, le second jette la même erreur.
Je ne comprends pas pourquoi j'obtiens cette erreur. Des idées?
Feature/Name
? Êtes-vous sûr qu'ilFeature/Name
existe et que c'est la branche extraite? Vérifiez avecgit branch
.git branch
pour vérifier l'Feature/Name
existence localement? Ne faites pas confiance à une interface graphique ou à un IDE. Aussi, avez-vous bien compris le cas?git push origin Feature/Name:Feature/Name
?git push --all -u
j'ai la nouvelle branche dans github, mais je ne peux toujours pas pousser depuis local, non? Voici ce qui s'est passé avec ça ... le nom réel de la branche estSQLMigration/ReportFixes
et ce qu'il y a dans githubSqlMigration/ReportFixes
. Alors, maintenant je peuxgit push origin SqlMigration/ReportFixes
- pourquoi github change-t-il la casse pour moi? Agh.Réponses:
J'avais aussi ce problème et cela me rendait fou. J'avais quelque chose comme
feature/name
maisgit branch -a
m'a montréFEATURE/name
. Renommer la branche, la supprimer et la recréer, rien n'a fonctionné. Ce qui a finalement résolu le problème:Entrer dans
.git/refs/heads
Vous verrez un
FEATURE
dossier. Renommez-le enfeature
.la source
Sur la base de mes propres tests et des commentaires de l'OP , je pense qu'à un moment donné, ils ont gaffé sur le boîtier du nom de la branche.
Tout d'abord, je crois que l'OP est sur un système d'exploitation insensible à la casse comme OS X ou Windows. Puis ils ont fait quelque chose comme ça ...
Notez la différence de boîtier. Notez également que l'erreur est très différente de si vous tapez simplement le nom.
Étant donné que Github utilise le système de fichiers pour stocker les noms de branche, il essaie de s'ouvrir
.git/refs/heads/SqlMigration/ReportFixes
. Parce que le système de fichiers est insensible à la casse, il s'ouvre avec succès.git/refs/heads/SqlMigration/ReportFixes
mais devient confus lorsqu'il essaie de comparer les noms de branche en tenant compte de la casse et qu'ils ne correspondent pas.Comment ils sont arrivés dans un état où se trouvent la succursale locale
SQLMigration/ReportFixes
et la succursale distante,SqlMigration/ReportFixes
je ne suis pas sûr. Je ne pense pas que Github ait manipulé le nom de la branche distante. L'explication la plus simple est que quelqu'un d'autre avec un accès push a changé le nom de la branche distante. Sinon, à un moment donné, ils ont fait quelque chose qui a réussi à créer la télécommande avec la faute de frappe. S'ils vérifient l'historique de leur shell,history | grep -i sqlmigration/reportfixes
ils pourront peut-être trouver une commande où ils ont mal tapé le boîtier.la source
Git vous permettra de récupérer la branche actuelle avec un boîtier différent, et il ne parviendra pas à trouver une référence sur la télécommande.
Je viens de découvrir la manière difficile.
la source
> git branch
et de vérifier que votre succursale a un * à côté.Une chose similaire m'est arrivée. J'ai créé une branche appelée quelque chose comme "Feat / name". J'ai essayé de le pousser en utilisant:
J'ai eu la même erreur fatale que vous:
Pour le résoudre, j'ai créé une nouvelle branche car j'avais très peu de fichiers impactés. Ensuite, j'ai répertorié mes branches pour supprimer la mauvaise et elle s'est affichée sans plafond:
J'avais utilisé des casquettes avant mais jamais sur le premier caractère. On dirait que git n'aime pas ça ...
la source
C'est sensible à la casse, assurez-vous simplement que la branche créée et pousser pour la branche sont toutes les deux dans la même capitale.
Exemple:
MAUVAISE façon de faire:
BONNE façon de faire:
la source
Peut-être que vous avez oublié d'exécuter git fetch? il est nécessaire de récupérer les données du dépôt distant! Essayez de courir
git fetch remote/branch
la source
Pour mon cas, j'avais l'habitude d'avoir un dossier de branche (ou peu importe son nom) avec des lettres majuscules, puis j'en crée un nouveau avec une casse différente (minuscule) mais git crée en fait la branche avec une majuscule.
J'ai créé une branche comme
feature-ABC/branch1
avant et l' ai poussée. Ensuite, je crée une branchefeature-abc/branch2
(notez l'ABC en minuscule), et j'essaye de la pousser vers une utilisation à distancegit push --set-upstream origin feature-abc/branch2
et j'obtiens l'erreur `` Impossible de résoudre la branche ''. Donc , jegit branch
et vois qu'il en fait créé aufeature-ABC/branch2
lieu defeature-abc/branch1
pour moi. Je vérifie à nouveau avecgit checkout feature-ABC/feature2
et le pousse en utilisant les majuscules (feature-ABC/feature2
) pour le résoudre.la source
J'ai rencontré le même problème qui était dû à une branche avec un mauvais boîtier. git permettez-moi de passer à la branche avec une casse incorrecte, c'est-
feature/Name
à- dire au lieu defeature/name
. J'ai trouvé une solution plus simple que celle indiquée ci-dessus juste:git checkout master (or develop)
git checkout feature/name
<avec un boîtier correctgit push
la source
J'ai résolu cela dans Windows 10 en utilisant cmd au lieu de GitBash .
Cela a à voir avec la casse des caractères et la façon dont git et les lignes de commande les gèrent.
la source
Vous avez peut-être créé une branche similaire mais différente en fonction de la casse, vous devez alors exécuter:
git branch -D <name-of-different-case-branch>
puis essayez de pousser à nouveau.
la source
Réponse légèrement modifiée de @Ty Le:
aucun changement dans les fichiers n'était nécessaire pour moi - j'avais une branche nommée 'Feature / ...' et tout en poussant vers l'amont, j'ai changé le titre en 'feature / ...' (la casse de la première lettre a été remplacée par celle du bas ).
la source
Je viens d'avoir ce problème aussi et mes branches normales commencent par
pb-3.1-12345/namebranch
mais j'ai accidentellement mis en majuscule les 2 premières lettresPB-3.1/12345/namebranch
. Après avoir renommé la branche pour utiliser des lettres minuscules, j'ai pu créer la branche.la source
pour moi, je nommais la branche comme
tout ce que j'avais à faire est d'utiliser
pour écrire
comme j'avais l'habitude de créer des branches en utilisant la petite lettre r dans rel.
alors, qu'est-ce qui a causé ce problème?
lorsque j'ai répertorié le
.git/refs/heads
contenu que j'ai trouvémais non
Relx.x
!et à l'intérieur
bug
et à l'intérieurbug
du nom de ma succursale.Donc, git essayez de créer un répertoire avec le même nom mais des lettres de cas différentes
mais le système n'est pas sensible à la casse.
C'est ce qui a causé ce problème!
la source
Eu le même problème avec un boîtier différent.
A fait une vérification vers le développement (ou maître), puis a changé le nom (le mauvais nom) en quelque chose d'autre comme test.
puis remplacez le nom par le bon nom
puis passez à la branche du bon nom
puis cela a fonctionné pour pousser vers la branche distante
la source
Pour moi, le problème était que git et mon système de fichiers macOS étaient définis sur deux sensibilités différentes à la casse. Mon Mac était formaté APFS / est sensible à la casse: NON mais j'avais inversé mes paramètres git à un moment donné en essayant de surmonter un problème étrange avec la dénomination des ressources d'image Xcode, donc git config --global core.ignorecase false . En le retournant, aligné les paramètres et recréant la branche et en poussant m'a remis sur la bonne voie.
git config --global core.ignorecase true
Crédit: https://www.hanselman.com/blog/GitIsCasesensitiveAndYourFilesystemMayNotBeWeirdFolderMergingOnWindows.aspx
la source
J'ai eu le même problème mais j'ai été résolu. J'ai réalisé que le nom de la branche est sensible à la casse. La branche principale de GitHub est 'master', tandis que dans ma commande gitbash c'est 'Master'. J'ai renommé Master dans le référentiel local en master et cela a fonctionné! 😀😀
la source
J'ai rencontré le même problème et j'ai remarqué que j'avais mélangé le boîtier lors de la vérification de la succursale. J'ai vérifié au
branchName
lieu deBranchName
et quand j'ai essayé de pousser vers la télécommande, j'ai eu la même erreur.Le correctif:
En définissant en amont le nom correct, la branche correcte a été mise à jour sur github et j'ai ensuite pu vérifier le nom de branche correct avec
Et il devrait être à jour avec votre dernière poussée.
la source
Si vous êtes dans une branche locale, vous pouvez renommer la branche "Fonctionnalité / Nom" en "Fonctionnalité / Nom"
git -m feature/Name
si vous rencontrez des problèmes pour effectuer une
git push
vérification dans une autre branche (ex develop) et revenir à la branche renomméegit checkout feature/Name
et réessayez votre
git push
la source