54 votes

Comment fusionner une demande de pull sur le projet de quelqu'un d'autre dans git ?

J'ai cloné ce dépôt sur mon ordinateur : https://github.com/derobins/wmd.git

Il y a cependant plusieurs bogues, et il semble qu'un autre utilisateur les ait corrigés et ait émis des "Pull requests" (je suppose que ce sont des demandes pour que leurs modifications soient validées ?)

Est-il possible de fusionner ces modifications dans ma version locale ?

EDIT : juste pour être clair, c'est no mon référentiel. J'utilise l'éditeur WMD de derobins, mais il a plusieurs bogues que ces pull requests prétendent corriger. J'ai cloné le dépôt sur Ubuntu (pas dans github) et j'espérais fusionner ces changements si possible.

56voto

Mark Longair Points 93104

(GitHub a documentation très complète sur la façon de traiter les demandes de pull).

Essentiellement, vous voudrez ajouter une télécommande pour le dépôt de la personne qui a fait les demandes de pull, par exemple :

git remote add helpful git://github.com/helpful-person/whatever.git

... puis récupèrent leurs modifications dans des branches de suivi à distance :

git fetch helpful

... de sorte que vous avez maintenant tous les commits du dépôt GitHub de cette personne dans votre clone du dépôt amont. Si vous regardez les commits supplémentaires dans cette demande de retrait, vous pouvez.. :

  1. fusionner le plus récent, par ex. git merge 75708aeab5
  2. choisir chacun de ces changements, par exemple. git cherry-pick 2142db89 , git cherry-pick 75708aeab5
  3. créer une branche locale pour continuer à travailler dessus, par exemple git checkout -b fix-for-issue3 75708aeab5
  4. etc. etc.

Une alternative est de cloner le dépôt du contributeur qui a fait les demandes de retrait à la place, si c'est le même mais pour ces corrections.

30voto

Andrew-Dufresne Points 1204

La réponse acceptée suggère de cloner ou d'ajouter un dépôt distant pour le dépôt de la personne qui a fait la demande de pull. Un autre plus propre et plus simple est d'utiliser cette commande

git pull https://github.com/otheruser/repo.git branchname

Par exemple, à l'heure où nous écrivons ces lignes, ghi a trois demandes de retrait ouvertes qui n'ont pas encore été fusionnées. Voici ce que j'ai fait pour les fusionner dans mon repo local.

# I want to make sure my master is in sync with the upstream master
git checkout -b merge-patches master
# first pull request
git pull --no-ff https://github.com/TiddoLangerak/ghi.git master
# second pull request
git pull --no-ff https://github.com/wayfare/ghi.git master

Notez que les deux demandes de pull ont été envoyées depuis master, c'est pourquoi j'ai tiré de leur master branche.

De cette façon, les autres dépôts ne sont pas ajoutés à vos dépôts distants, et vous n'avez pas à les sélectionner ou à les cloner localement.

-2voto

kalkin Points 423

Vous clonez le repo sur votre compte github. Ensuite, il suffit de visiter la forkqueue de votre repo cloné et de choisir les correctifs que vous voulez fusionner dans votre dépôt.

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