J'ai fait une pull request mais après cela j'ai fait quelques commits sur le projet localement qui ont fini de polluer ma pull request, j'ai essayé de la supprimer mais sans aucune chance.
J'ai trouvé des questions similaires sur StackOverflow mais je ne peux pas appliquer ce qu'il y a dedans. C'est ma première demande d'extraction sur GitHub, donc c'est un peu étrange pour moi comment tout cela fonctionne.
Le commit mis en évidence est celui dont j'ai besoin pour conserver et supprimer tous les autres éléments. Cela devient le quatrième commit de l'histoire parce que je fais des fusions.
Quelqu'un peut-il expliquer ce qui se passe et comment résoudre ce problème?
git
github
pull-request
émerveillé
la source
la source
what branch
= la branche sur laquelle vous travaillez,onto what branch
= la branche dans laquelle vous tirez la demandeRéponses:
Vous disposez de plusieurs techniques pour le faire.
Cet article - lisez la partie sur le retour vous expliquera en détail ce que nous voulons faire et comment le faire.
Voici la solution la plus simple à votre problème:
La commande revert créera un nouveau commit avec l' annulation du commit d'origine.
la source
Les gens n'aimeraient pas voir un mauvais commit et un commit de retour pour annuler les changements du mauvais commit. Cela pollue l'historique des engagements.
Voici un moyen simple de supprimer le mauvais commit au lieu d'annuler les modifications avec un commit de retour.
git checkout my-pull-request-branch
git rebase -i HEAD~n
// oùn
est le nombre de derniers validations que vous souhaitez inclure dans le rebase interactif.pick
pardrop
pour les commits que vous souhaitez supprimer.git push --force
la source
git push origin HEAD:myBranch --force
. Mais sinon super et utile.git rebase -i HEAD~<n>
, en haut du fichier, il y aura des<n>
lignes de commits, chaque ligne contenant le textepick <commit id>
. Les commits sont par défautpick
, donc pour chaque commit que vous souhaitez supprimer, changez le textepick
endrop
Si vous supprimez un commit et que vous ne souhaitez pas conserver ses modifications, @ferit a une bonne solution.
Si vous souhaitez ajouter ce commit à la branche actuelle, mais que cela n'a pas de sens de faire partie du pr actuel, vous pouvez faire ce qui suit à la place:
git rebase -i HEAD~n
git reset HEAD^ --soft
pour annuler la validation des modifications et les remettre dans un état intermédiaire.git push --force
pour mettre à jour la branche distante sans votre commit supprimé.Vous avez maintenant supprimé le commit de votre télécommande, mais vous aurez toujours les modifications localement.
la source
Alors faites ce qui suit,
Disons que le nom de votre branche est my_branch et cela a les commits supplémentaires.
git checkout -b my_branch_with_extra_commits
(Garder cette branche enregistrée sous un autre nom)gitk
(Ouvre la console git)git checkout my_branch
gitk
(Cela ouvrira la console git)reset branch to here
"git pull --rebase origin branch_name_to _merge_to
git cherry-pick <SHA you copied in step 3. >
Maintenant, regardez l'historique de commit de la branche locale et assurez-vous que tout semble bon.
la source
C'est ce qui m'a aidé:
Créez une nouvelle branche avec celle existante. Appelons l'existant
branch_old
et le nouveau commebranch_new
.Réinitialisez
branch_new
à un état stable, lorsque vous n'avez eu aucun problème de validation. Par exemple, pour le mettre au niveau de votre master local, procédez comme suit:git reset —hard master git push —force origin
cherry-pick
les commits debranch_old
dansbranch_new
git push
la source