Applicable pour Eclipse Luna + Eclipse Git 3.6.1
JE,
- référentiel git cloné
- fait quelques changements dans le code source
- modifications par étapes de Git Staging View
- enfin, engagez-vous et poussez!
Et j'ai rencontré ce problème avec EGit et voici comment je l'ai résolu.
Oui, quelqu'un a validé les modifications avant de valider mes modifications. Les modifications sont donc rejetées. Après cette erreur, les modifications sont réellement validées dans le référentiel local. Je ne voulais pas juste Pull
les changements parce que je voulais maintenir linear history
comme indiqué dans - Dans quels cas `git pull` pourrait-il être nocif?
Alors, j'ai exécuté les étapes suivantes
- du point de vue du référentiel Git, faites un clic droit sur le
projet Git concerné
- select
Fetch from Upstream
- il récupère les mises à jour à distance (références et objets) mais aucune mise à jour n'est effectuée localement. pour plus d'informations, reportez-vous à Quelle est la différence entre 'git pull' et 'git fetch'?
- sélectionnez
Rebase...
- cela ouvre une fenêtre contextuelle, cliquez sur Preserve merges during rebase
voir pourquoi
Que fait exactement "rebase --preserve-merges" de git (et pourquoi?)
- cliquer sur
Rebase button
- s'il y en a
conflict(s)
, passez à l'étape 6 sinon à l'étape 11
- un
Rebase Result
popup apparaîtra, il suffit de cliquer surOK
file comparator
ouvrirait, vous devez modifier left side file
.
- une fois que vous avez terminé de fusionner correctement les modifications, allez
Git Staging
voir
stage the changes
. c'est à direadd to index
- sur la même vue, cliquez sur
Rebase
-> Continue
. répétez 7 à 10 jusqu'à ce que tous les conflits soient résolus.
- depuis la
History
vue, sélectionnez votre ligne de validation et sélectionnezPush Commit
- cochez la
Rebase Commits of local.......
case et cliquez sur suivant. référez-vous pourquoi - Git: rebase sur la branche de développement depuis l'amont
- cliquer sur
Finish
Remarque: si vous avez plusieurs commits de référentiel local, vous devez les écraser en un seul commit pour éviter plusieurs fusions.