33 votes

Comment faire une demande d'extraction dans GitHub avec uniquement la dernière validation dans la branche principale de mon référentiel forké

J'ai créé un dépôt sur github. J'ai fait quelques changements et fait une demande de tirage.

Maintenant, j'ai apporté d'autres modifications et je souhaite effectuer une nouvelle demande d'extraction, mais sur l'écran de prévisualisation avant de faire la demande d'extraction, les anciennes commises sont également affichées (celles qui ont déjà été acceptées).

Comment sélectionner uniquement la dernière validation dans la branche principale de mon référentiel forké afin de pouvoir effectuer une demande d'extraction avec uniquement cette validation?

47voto

Felipe Brahm Points 1381

Cette réponse d'un collègue de travail fixe mon problème:

git checkout -b NEW_BRANCH_NAME LAST_COMMIT_NAME_BEFORE_THE_ONE_WANTED
git cherry-pick COMMIT_NAME_WANTED
git push origin NEW_BRANCH_NAME

Puis sur GitHub, vous pouvez faire une pull request pour la nouvelle branche que vous avez créé.

Mise à JOUR

J'ai demandé et répondu à cette question quand j'ai commencé à travailler avec git. Maintenant que j'en sais plus à ce sujet, j'aimerais développer cette réponse.

Lorsque vous travaillez avec une fourchette, vous souhaiterez probablement de les maintenir à jour par rapport à l'original des pensions. Donc, voici les étapes que j'ai serait de suivre aujourd'hui:

git remote add upstream GIT_URL_OF_THE_ORIGINAL_REPO

Maintenant, vous avez une référence, upstream de points à celui des pensions. Par défaut, vous devez également avoir un autre appelé origin qui serait le point de votre fourche dans ce cas.

Maintenant, vous avez besoin pour obtenir les dernières modifications:

git fetch upstream

Alors si vous voulez mettre à jour votre fourche avec des changements de upstream vous feriez ceci:

git checkout master //checkout your master branch
git merge upstream/master //merge changes from the master branch in upstream into the branch you checked out (master)
git push origin master //if you want to push your updated master

Maintenant, pour répondre à la question d'origine, ce que je voudrais faire aujourd'hui, si je voulais présenter un nouveau PR, serait:

git fetch upstream //get the latest changes from the original repo
git checkout -b my_new_feature upstream/master //create a new branch, starting from the master in the original repo
git cherry-pick WHATEVER_COMMIT_I_WANT //select the commit I want and it to this new branch
git push origin my_new_feature //push a new branch to my fork

Alors je demande un nouveau PR pour l' my_new_feature de la branche.

Vous pouvez remplacer git cherry-pick WHATEVER_COMMIT_I_WANT avec une simple modification/ajout d'un fichier et ensuite de faire git add FILENAME, git commit -m "Fixing some stuff".

4voto

Wes Hardaker Points 10426

Vous pourriez probablement placer les commits dans une branche distincte (branche avant le premier ensemble de commits), en supposant qu'ils ne soient pas liés au premier commet. La branche distincte peut alors être la cible de la demande d'extraction et n'inclura que votre deuxième ensemble de validations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X