Je reçois ce message en poussant vers le dépôt github. Pouvez-vous me dire la procédure étape par étape pour résoudre ce problème? J'ai poussé une seule fois et c'était réussi. Mais, lorsque j'ai mis à jour un projet et essayé de pousser mon deuxième commit, cela indique "le refus refusé par le maître" et ne me permet pas de pousser. S'il vous plaît expliquer la procédure.
J'ai eu le même problème et j'ai pu le résoudre. afk5min avait raison, le problème est que la branche dont vous avez extrait le code a depuis changé sur le référentiel distant. Conformément aux pratiques standard de Git ( http://git-scm.com/book/fr/Git-Basics-Working-with-Remotes ), vous devez (maintenant) fusionner ces modifications à distance. référentiel dans vos modifications locales avant de pouvoir commettre. Cela a du sens, cela vous oblige à prendre les modifications des autres et à les fusionner dans votre code, en veillant à ce que votre code continue à fonctionner avec les autres modifications en place.
Quoi qu'il en soit, sur les marches.
Configurez le 'fetch' pour récupérer la branche d'origine de votre part.
Récupère la branche distante.
Fusionner cette branche distante sur votre branche locale.
Validez le changement (fusion) dans votre référentiel local.
Poussez la modification dans le référentiel distant.
En détail...
Dans Eclipse, ouvrez la vue 'Git Repositories'.
Vérifiez que vous voyez votre référentiel local et que vous pouvez voir le référentiel distant comme un sous-dossier. Dans ma version, cela s'appelle Remotes, et ensuite je peux voir le projet distant à l'intérieur.
Recherchez la flèche verte pointant vers la gauche, il s’agit de la flèche "chercher". Faites un clic droit et sélectionnez "Configurer la récupération".
Vous devriez voir l'URI, assurez-vous qu'il pointe vers le référentiel distant.
Regardez dans la section des correspondances de références de la fenêtre contextuelle. La mienne était vide. Cela indiquera les références distantes que vous voulez récupérer. Cliquez sur 'Ajouter'.
Tapez le nom de la branche que vous devez extraire du référentiel distant. Le mien était "maître" (d'ailleurs, un menu déroulant ici serait génial !!, pour l'instant, vous devez le taper). Continuez dans la fenêtre contextuelle, en cliquant éventuellement sur "Terminer".
Cliquez sur "Enregistrer et récupérer". Cela ira chercher cette référence distante.
Recherchez dans le dossier "Branches" de votre référentiel local. Vous devriez maintenant voir cette branche distante dans le dossier distant. Encore une fois, je vois "maître".
Cliquez avec le bouton droit de la souris sur la branche locale dans le dossier "Local" de "Branches", nommé "maître". Sélectionnez "Fusionner", puis sélectionnez la branche distante, nommée "Origine/maître".
Traiter à travers la fusion.
Commettez les modifications dans votre référentiel local.
Transférez vos modifications dans le référentiel distant.
Allez prendre une boisson savoureuse en vous félicitant. Prenez le reste de la journée.
Dans mon cas, j'ai choisi la case à cocher Force Update
en appuyant. Ça a marché comme sur des roulettes.
Dans l'intervalle (pendant la mise à jour de votre projet), d'autres commits ont été effectués dans la branche "maître". Par conséquent, vous devez d'abord extraire ces modifications pour pouvoir appliquer vos modifications.
Applicable à Eclipse Luna + Eclipse Git 3.6.1
JE,
Et j'ai fait face à ce problème avec EGit et voici comment je l'ai corrigé.
Oui, quelqu'un a validé les modifications avant de les valider. Donc, les modifications sont rejetées. Après cette erreur, les modifications sont réellement validées dans le référentiel local. Je ne voulais pas simplement Pull
les modifications parce que je voulais conserver _linear history
_ comme indiqué dans - Dans quels cas `git pull` peut-il être dangereux?
J'ai donc exécuté les étapes suivantes
Fetch from Upstream
_ - récupère les mises à jour distantes (références et objets) mais aucune mise à jour n'est effectuée localement. pour plus d'informations, référez-vous Quelle est la différence entre 'git pull' et 'git fetch'?Rebase...
_ - cela ouvre une fenêtre popup, cliquez sur _Preserve merges during rebase
_ voyez pourquoiRebase button
_conflict(s)
, passez à l'étape 6 sinon à l'étape 11Rebase Result
_ apparaîtra, cliquez simplement sur OK
file comparator
_ s'ouvrirait, vous devez modifier _left side file
_.Git Staging
_stage the changes
_. c'est-à-dire _add to index
_Rebase
-> Continue
. Répétez de 7 à 10 jusqu'à ce que tous les conflits soient résolus.History
, sélectionnez votre ligne de validation, puis sélectionnez _Push Commit
_Rebase Commits of local.......
_ et cliquez sur Suivant. renvoie pourquoi - Git: base sur la branche de développement depuis l'amontFinish
Remarque: Si vous avez plusieurs commits de référentiel locaux, vous devez les écraser en un seul pour éviter plusieurs fusions.
Configurer Après avoir poussé le code lorsque vous recevez un message rejeté, cliquez sur Configurer puis sur Ajouter une spécification comme indiqué dans cette image.
Descendez et cliquez sur le ref/heads/yourbranchname et cliquez sur Add Spec à nouveau
Ouvrir la vue git:
1- sélectionnez votre projet et choisissez la fusion 2- Sélectionnez le suivi à distance 3- cliquez sur ok
Git fusionnera la branche distante avec le référentiel local
4- puis Push
Cette erreur signifie que le référentiel distant a eu d'autres commits et a devancé votre branche locale.
J'essaie de faire un git pull suivi d'un git Push. S'il n'y a pas de changements conflictuels, git pull envoie le dernier code à ma branche locale tout en conservant mes modifications intactes.
Puis un git Push envoie mes modifications à la branche principale.
J'ai trouvé que vous devez être sur le dernier commit du git. Voici donc les étapes à suivre: 1) assurez-vous que vous n’avez pas travaillé sur les mêmes fichiers, sinon vous rencontrerez une erreur DITY_WORK_TREE. 2) tirez les dernières modifications. 3) commettez vos mises à jour.
J'espère que cela t'aides.