Comment supprimer des commits d'une requête pull

j'ai fait une demande de pull mais après que j'ai fait quelques engagements au projet localement qui a fini par polluer ma demande de pull, j'ai essayé de l'enlever, mais sans aucune chance.

j'ai trouvé des questions similaires sur StackOverflow mais je ne peux pas appliquer ce qu'il y a là-dedans. C'est ma première demande de pull sur GitHub donc c'est un peu étrange pour moi comment tout ça fonctionne.

en surbrillance commettre est celle que j'ai le besoin de conserver et supprimer tous les autres trucs. Il devient le quatrième s'engager dans l'histoire parce que j'ai fusionner les choses.

enter image description here

mon git log enter image description here

quelqu'un Peut-il expliquer ce qu'il se passe et comment résoudre ce problème?

49
demandé sur ferit 2016-03-23 05:38:58

3 réponses

Vous avez plusieurs techniques pour le faire.

cette post - lire la partie sur le retour expliquera en détail ce que nous voulons faire et comment le faire.

Voici la solution la plus simple à votre problème:

# Checkout the desired branch
git checkout <branch>

# Undo the desired commit
git revert <commit>

# Update the remote with the undo of the code
git push origin <branch>

la commande revert créera une nouvelle propagation avec le annuler de la propagation originale.

48
répondu CodeWizard 2017-05-23 12:03:05

les gens n'aimeraient pas voir une erreur commettre et un retour commettre pour annuler les changements de la mauvaise commettre. Cela pollue commettre l'histoire.

voici un moyen simple de supprimer la mauvaise propagation au lieu de supprimer les changements avec une propagation.

  1. git checkout my-pull-request-branch

  2. git rebase -i HEAD~n // où n est le nombre de dernières propagations que vous voulez inclure dans interactif rebase.

  3. remplacer pick par drop pour les commits que vous voulez rejeter.
  4. Enregistrer et quitter.
  5. git push --force
12
répondu ferit 2018-09-06 06:12:59

ainsi que les suivants,

disons que votre nom de branche est my_branch et qu'il y a des propagations supplémentaires.

  1. git checkout -b my_branch_with_extra_commits (conserver cette branche sous un nom différent)
  2. gitk (ouvre la console git)
  3. cherchez l'engagement que vous voulez garder. Copiez le SHA de ce commit sur un bloc-notes.
  4. git checkout my_branch
  5. gitk (Ceci ouvrira la console git )
  6. cliquez avec le bouton droit de la souris sur la propagation à laquelle vous souhaitez revenir (indiquez avant vos modifications) et cliquez sur " reset branch to here
  7. Faire un git pull --rebase origin branch_name_to _merge_to
  8. git cherry-pick <SHA you copied in step 3. >

Maintenant, regardez l'histoire de la branche locale de commit et assurez-vous que tout semble bon.

1
répondu Som Bhattacharyya 2018-08-27 14:44:10