web-dev-qa-db-fra.com

Sourcetree - annule les commits non compressés

J'utilise Sourcetree pour Windows pour un référentiel git et je souhaite annuler un commit non pushé.

Est-ce possible? Si je «rétablis le commit», il crée un deuxième commit qui annule le premier commit, mais je ne veux pas que le premier commit apparaisse dans mon contrôle de code source.

Je pourrais également supprimer mon référentiel local et le récupérer à nouveau sans mon commit local, mais peut-être qu'il y a un autre moyen?

177
deimos1988
  1. Faites un clic droit sur le commit que vous souhaitez réinitialiser (pas celui que vous souhaitez supprimer!)
  2. Sélectionnez "Reset master to this commit"
  3. Sélectionnez "Soft" reset.

Une réinitialisation logicielle conservera vos modifications locales.

Source: https://answers.atlassian.com/questions/153791/how-should-i-remove-Push-commit-from-sourcetree

Modifier

À propos de git revert: Cette commande crée un nouveau commit qui annulera les autres commits. Par exemple. Si vous avez un commit qui ajoute un nouveau fichier, git revert peut être utilisé pour faire un commit qui supprimera le nouveau fichier.

À propos de l'application d'une réinitialisation logicielle: Supposons que vous avez les validations A à E (A---B---C---D---E) et que vous souhaitez supprimer le dernier commit (E). Ensuite, vous pouvez effectuer une réinitialisation logicielle pour commettre D. Avec une réinitialisation logicielle, commit E sera supprimé de git mais les modifications locales seront conservées. Il y a plus d'exemples dans la documentation git reset .

299
nightlyop

Si vous sélectionnez l'entrée de journal à laquelle vous souhaitez revenir, vous pouvez cliquer sur "Réinitialiser à cette validation". Utilisez cette option uniquement si vous n'avez pas appliqué les modifications de validation inverse. Si vous craignez de perdre les modifications, vous pouvez utiliser le mode souple qui laissera un ensemble de modifications non validées (ce que vous venez de modifier). L'utilisation de la copie de travail mixte réinitialise la copie de travail mais conserve ces modifications. Un disque va simplement se débarrasser entièrement des modifications. Voici quelques captures d'écran:

 enter image description here

34
Muhammad Awais

Si vous êtes sur une autre branche, vous devez d'abord "vérifier cette validation" pour la validation que vous souhaitez supprimer, puis seulement "réinitialiser la branche actuelle à cette validation" en choisissant une validation précédente, fonctionnera.

0
pomaranga

Si vous souhaitez supprimer un commit, vous pouvez le faire dans le cadre d'une base interactive. Mais faites-le avec prudence, pour ne pas gâcher votre rapport.

En Sourcetree:

  1. Cliquez avec le bouton droit de la souris sur un commit plus ancien que celui que vous souhaitez supprimer et choisissez " Rebaser les enfants de xxxx de manière interactive ... ". Celui sur lequel vous cliquez sera votre "base" et vous pourrez modifier chaque commit effectué après celui-ci.
  2. Dans la nouvelle fenêtre, sélectionnez le commit que vous voulez supprimer, puis cliquez sur le bouton " Supprimer " en bas, ou cliquez à droite sur le commit et cliquez sur " Supprimer la validation ".
  3. Cliquez sur "OK" (ou " Annuler " si vous le souhaitez. avorter).

Découvrez ceci article de blog d'Atlassian pour plus d'informations sur le rebasage interactif dans Sourcetree.

0
jna