web-dev-qa-db-fra.com

Egit rejeté sans avance rapide

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.

84
Jay

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.

  1. Configurez le 'fetch' pour récupérer la branche d'origine de votre part.

  2. Récupère la branche distante.

  3. Fusionner cette branche distante sur votre branche locale.

  4. Validez le changement (fusion) dans votre référentiel local.

  5. Poussez la modification dans le référentiel distant.

En détail...

  1. Dans Eclipse, ouvrez la vue 'Git Repositories'.

  2. 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.

  3. 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".

  4. Vous devriez voir l'URI, assurez-vous qu'il pointe vers le référentiel distant.

  5. 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'.

  6. 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".

  7. Cliquez sur "Enregistrer et récupérer". Cela ira chercher cette référence distante.

  8. 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".

  9. 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".

  10. Traiter à travers la fusion.

  11. Commettez les modifications dans votre référentiel local.

  12. Transférez vos modifications dans le référentiel distant.

  13. Allez prendre une boisson savoureuse en vous félicitant. Prenez le reste de la journée.

214
Robert Bender

Dans mon cas, j'ai choisi la case à cocher Force Update en appuyant. Ça a marché comme sur des roulettes.

15
BSeitkazin

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.

11
afk5min

Applicable à Eclipse Luna + Eclipse Git 3.6.1

JE,

  1. référentiel git cloné
  2. fait quelques changements dans le code source
  3. changements mis en scène à partir de Git Staging View
  4. enfin, engagez et poussez!

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

  1. du point de vue du référentiel Git, faites un clic droit sur le Git concerné
    projet
  2. select _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'?
  3. sélectionnez _Rebase..._ - cela ouvre une fenêtre popup, cliquez sur _Preserve merges during rebase_ voyez pourquoi
    Qu'est-ce que fait exactement la "rebase - conservation-fusion" de git (et pourquoi?)
  4. cliquer sur _Rebase button_
  5. s'il y a/qu'il y a une conflict(s), passez à l'étape 6 sinon à l'étape 11
  6. un popup _Rebase Result_ apparaîtra, cliquez simplement sur OK
  7. _file comparator_ s'ouvrirait, vous devez modifier _left side file_.
  8. une fois que vous avez fini de fusionner les modifications correctement, passez à la vue _Git Staging_
  9. _stage the changes_. c'est-à-dire _add to index_
  10. sur la même vue, cliquez sur Rebase-> Continue. Répétez de 7 à 10 jusqu'à ce que tous les conflits soient résolus.
  11. dans la vue History, sélectionnez votre ligne de validation, puis sélectionnez _Push Commit_
  12. cochez la case _Rebase Commits of local......._ et cliquez sur Suivant. renvoie pourquoi - Git: base sur la branche de développement depuis l'amont
  13. cliquez sur Finish

Remarque: Si vous avez plusieurs commits de référentiel locaux, vous devez les écraser en un seul pour éviter plusieurs fusions.

6
Yogesh Manware

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.

Source ref and Destination ref Descendez et cliquez sur le ref/heads/yourbranchname et cliquez sur Add Spec à nouveau

enter image description here Assurez-vous de sélectionner la mise à jour forcée

enter image description here Enfin enregistrer et pousser le code dans le dépôt

3

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

3
dafali

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.

1
Pushkin

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.

0
Mighty Elemental