Scénario:
Git répond:
Les mises à jour ont été rejetées car le bout de votre branche actuelle est derrière son homologue à distance. etc.
Je suis le seul à pirater cette branche - personne d'autre ne la touche. La branche distante est en fait derrière la branche locale. Je ne devrais pas avoir à tirer du tout.
(Et si je tire, Git signale des conflits entre les deux et me force à fusionner la branche en elle-même)
Pourquoi cela se produit-il (probablement)? Et comment puis-je diagnostiquer/résoudre ce problème?
Pour être clair, je ne branche nulle part, et personne d'autre travaille dessus
Remote: Commit A -------- Commit B
Local: Commit A -------- Commit B -------- Commit C
C est une suite droite de B, aucune branche n’est impliquée. Mais git pense que C est une branche de A:
Remote: Commit A -------- Commit B
------- Commit C
/
Local: Commit A -------- Commit B
Ce n'est pas; c'est une suite droite de B.
Vous avez probablement déjà réécrit l'histoire? Votre branche locale a divergé de celle du serveur. Exécutez cette commande pour mieux comprendre ce qui s'est passé:
gitk HEAD @{u}
Je vous recommande fortement d'essayer de comprendre d'où vient cette erreur. Pour résoudre ce problème, lancez simplement:
git Push -f
Le -f
en fait une «poussée forcée» et écrase la branche sur le serveur. C'est très dangereux quand on travaille en équipe. Mais Puisque vous êtes seul et que votre état local est correct, cela devrait aller. Vous risquez de perdre l'historique de validation si ce n'est pas le cas.
Cela m'est arrivé quand j'essayais de pousser la branche develop (j'utilise git flow) Quelqu'un devait maîtriser les mises à jour Push. pour le réparer j'ai fait:
git co master
git pull
Qui a récupéré ces changements. Ensuite,
git co develop
git pull
Ce qui n'a rien fait. Je pense que la branche de développement a déjà poussé malgré le message d'erreur. Tout est à jour maintenant et pas d'erreurs.
La solution est très simple et a fonctionné pour moi.
Essaye ça :
git pull --rebase <url>
puis
git Push -u Origin master
Pour le diagnostiquer, suivez cette réponse .
Mais pour le réparer, sachant que vous êtes le seul à le changer, faites:
1 - sauvegardez votre projet (je n'ai créé que les fichiers sur git, dossier ./src)
2 - git pull
3 - restaurez votre sauvegarde sur les nombreux fichiers "désordonnés" (avec indicateurs de fusion)
J'ai essayé git pull -s recursive -X ours
mais je n'ai pas fonctionné comme je le voulais, cela pourrait être une option, mais sauvegardez d'abord !!!
Assurez-vous que les différences/changements (chez git gui) sont nuls. C'est mon cas, il n'y a rien à fusionner du tout, mais github répète que je devrais fusionner ...