web-dev-qa-db-fra.com

Egit - Impossible de commander maintenant - bloqué dans un état de rebasement

J'ai posé une question similaire il y a quelques jours, mais je n'ai pas eu de réponse utile, alors je veux tout préciser.

J'ai un gros projet en tant que repo privée sur github. Un de mes amis et moi y travaillons actuellement. J'ai importé le référentiel entier dans un référentiel local et dans Eclipse et tout s'est bien passé, jusqu'à ce que les conflits de fusion apparaissent. Chaque fois que je rencontre un conflit de fusion (par exemple, lorsque j'oublie de tirer avant de travailler sur des classes souvent utilisées), l'ensemble du projet de mes espaces de travail Eclipse bascule dans un état "Rebase w/merge":

 Rebase w/merge state of the project

Maintenant, je marque des points lorsque les conflits de fusion sont apparus. Alors j'ai ouvert la classe pour fusionner avec l'outil de fusion, édité tout ce que je devais changer et ajouté la classe à indexer à nouveau.

Ensuite, j'ai validé toutes les modifications de fusion et tout transféré en amont dans master-branch (nous utilisons uniquement master jusqu'à présent, car nous n'avons pas beaucoup d'expérience avec git et vcs/svn).

Mais maintenant, je ne peux ni revenir à la branche principale, ni annuler une nouvelle base ou faire autre chose.

J'ai essayé:

Cliquez avec le bouton droit sur le dossier de projet -> Équipe -> Basculer vers -> maître .  Checkout fail

C'est la notification d'erreur.

Ensuite, on m'a dit d'annuler la nouvelle base dans la vue Référentiels Git:

 Git Repo View

Mais ni mon dépôt local ni celui à distance n’a aucune option liée au changement de base.

Ensuite, j'ai essayé "checkout" dans le menu de la branche locale. Même résultat . J'ai aussi essayé de pousser ma branche locale dans l'amont:

 enter image description here

Ceci est mon préréglage de l'option fusion/refonte, mais ces deux options donnent le même résultat:

 enter image description here

J'ai consulté mon dépôt dans github - toutes mes modifications, y compris la résolution de la fusion, sont déjà insérées dans la branche principale et sont prêtes à être récupérées. Mon coéquipier peut les tirer et continuer à travailler sur le projet. Mais je ne peux pas échapper à cet état Rebase w/fusion. Chaque fois que cet état est apparu, je devais supprimer toutes les ressources du projet, supprimer le référentiel local, tout réimporter dans Eclipse et enfin, je devais effectuer chaque configuration supplémentaire à plusieurs reprises.

Alors: comment puis-je échapper à ce rebasement? Et d'ailleurs: quelle est la différence entre rebase et fusion?

18
Cydhra

Dans la vue Git Staging, il existe une option pour abandonner la base.

 enter image description here

34

Utilisez le commit Merge en amont vers une branche locale.

Rebaser signifie changer l'ancien code maître en nouveau code maître (c'est-à-dire changer la base de votre branche) et fusionner signifie ajouter vos modifications au maître.

Vous pouvez également essayer d'utiliser la ligne de commande git pour résoudre un tel conflit.

Utilisation de Git Rebase/Merge Process Pendant que vous travaillez sur votre ordinateur, obtenez tous les fichiers ajoutés et envoyés au serveur.

git add .
git commit -m "SSSS"
git Push -u Origin <BranchName>
git checkout master
git pull

[A] Le code principal est ancien signifie que vous pouvez fusionner votre code.

git merge <your branch name>
git Push

[B] Master a un code plus récent et affiche une liste des fichiers sont extraits du serveur.

$ git checkout your_branch  Note: make sure you are working in your branch
$ git rebase master

Maintenant, vous allez recevoir un message sur les conflits, alors commencez à travailler sur chaque fichier du bas pour résoudre le conflit.

$ git add <filename which you just updated> 
$ git rebase --continue

Suivez les deux commandes ci-dessus jusqu'à ce que tous les conflits soient résolus . Maintenant, les maîtres modifiés sont fusionnés dans votre branche et envoyés au serveur << VOTRE BRANCHMaintenant, vous devez mettre à jour la branche principale

$ git checkout master
$ git merge <YOUR_BRANCH>
$ git Push

Vérifiez REMARQUE: lorsque vous modifiez votre base si vos modifications actuelles sont écrasées et que vous ne voulez pas continuer, exécutez -

$git rebase --abort

Tout en faisant la fusion/rebase si une fenêtre de message semble écrire votre instruction de validation, IL N'EST IS PAS D'ÉCHAPPEMENT ... écrire quelque chose, puis procédez comme suit:

$git reset --hard HEAD~1

[Cette commande réinitialisera la tête de validation actuelle sur 1 niveau et rétablira ce qui s’est passé lors de la dernière fusion.]

1
anand mishra

Si vous ne parvenez pas à voir la vue Git Staging ou si la vue Staging montre le mauvais référentiel, cliquez simplement sur le triangle situé à côté de l'icône de base dans la barre d'outils, puis sur Abandonner.

Cliquez ici

0
Johnny

Si vous êtes bloqué en état de base et si Eclipse refuse de l'abandonner (pas de réponse), vous devez désactiver la construction automatique de votre projet en décochant les options suivantes:

Projet/Construire automatiquement

Cela arrêtera toutes les générations en attente.

0
Denis S.