672 votes

Comment mettre à jour une pull request à partir d'un repo forké ?

J'ai donc commencé par forker un repo et j'ai ensuite fait un commit sur ce repo forker. J'ai ensuite ouvert une pull request. La demande d'extraction listait tous les changements que je souhaitais.

Après avoir examiné ma pull request, il y avait un certain nombre de changements que le propriétaire du repo voulait que je fasse avant qu'il ne l'accepte. J'ai fait ces changements dans mon fork, maintenant comment mettre à jour la pull request avec ces changements (ou est-ce que ce n'est pas comme ça que je devrais le faire) ?

11 votes

@PaulDraper Je ne suis pas d'accord, cet utilisateur connaît et présente déjà différentes méthodes pour mettre à jour une pull request, et demande laquelle est la meilleure. En revanche, je ne connaissais aucune méthode et je m'interrogeais sur leur existence. Comme le montre la popularité de cette question, c'est le cas pour beaucoup d'autres utilisateurs.

6 votes

Je pense que la popularité est due au fait que (1) il s'agit d'une très bonne question courante et (2) que certains utilisateurs se sont retrouvés ici au lieu de là. Si la question avait été identifiée à l'origine comme un doublon, ils auraient trouvé que l'autre question était la même et auraient répondu à leur question.

659voto

shelhamer Points 4327

Vous l'avez fait correctement. La pull request sera automatiquement mise à jour. Le processus est le suivant :

  1. Ouvrir une pull request
  2. Modifications basées sur le retour d'information dans votre repo local
  3. Pousser vers la branche concernée de votre fourche

La demande d'extraction ajoutera automatiquement les nouveaux commits à la base de données Commits de la RP.

81 votes

Bien ! Je vérifiais partout sauf dans la pull request actuelle. c'est de la magie, de la magie noire, je ne la remettrai pas en question.

61 votes

C'est une bonne raison de travailler en branches. Si, par exemple, vous poussiez toujours vers master, vous pourriez involontairement ajouter à votre précédente demande de pull.

0 votes

D'une manière ou d'une autre, les changements ne sont pas reflétés dans cette pull request comme ils le devraient. La branche actuelle a deux commits d'avance sur la demande d'extraction. github.com/akshay2000/XBMCRemoteRT/pull/17

83voto

jmu Points 1211

La mise à jour d'une pull request dans GitHub est aussi simple que de commiter les changements souhaités dans la branche existante (qui a été utilisée avec la pull request), mais il est souvent souhaitable d'écraser les changements en un seul commit :

git checkout yourbranch
git rebase -i origin/master

# Edit command names accordingly
  pick   1fc6c95 My pull request
  squash 6b2481b Hack hack - will be discarded
  squash dd1475d Also discarded

git push -f origin yourbranch

...et maintenant la pull request ne contient qu'un seul commit.


Liens connexes sur le rebasage :

2 votes

Upvote pour la mention de rebase. Cela permet de réduire le bruit dans l'historique des révisions.

0 votes

+11 (oui, j'avais l'intention de rrrrépéter la clé. L'utilisation de git rebase/pick/squash fonctionne très bien.

13 votes

L'inconvénient de cette approche est que vous supprimez votre engagement antérieur. Cela signifie que si des commentaires sont faits dans la demande d'extraction, ils seront perdus et disparaîtront avec le commit original.

39voto

igorw Points 12642

Il suffit de pousser vers la branche à laquelle la demande de téléchargement fait référence. Tant que la demande d'extraction est ouverte, elle devrait être mise à jour automatiquement avec les nouveaux commits.

16voto

VicJordan Points 382

Je l'ai fait en suivant les étapes ci-dessous :

  1. git reset --hard <commit key of the pull request>
  2. J'ai fait mes changements dans le code que je voulais faire
  3. git add
  4. git commit --amend
  5. git push -f origin <name of the remote branch of pull request>

3voto

AaronLS Points 12720

Si l'on utilise GitHub sous Windows :

  1. Apporter des modifications au niveau local.
  2. Ouvrez GitHub, passez aux dépôts locaux, double-cliquez sur le dépôt.
  3. Changez la branche (près du haut de la fenêtre) pour la branche à partir de laquelle vous avez créé la pull request (c'est-à-dire la branche du côté de votre fork de la comparaison).
  4. Vous devriez voir l'option d'entrer un commentaire de validation sur la droite et de valider les changements dans votre répertoire local.
  5. Cliquez sur sync on top, ce qui, entre autres choses, pousse votre commit du local vers votre fork distant sur GitHub.
  6. La pull request sera mise à jour automatiquement avec les nouveaux commits. C'est parce que la demande d'extraction représente une différence avec la branche de votre fourche. Si vous allez sur la page de la demande d'extraction (celle où vous et d'autres personnes peuvent commenter votre demande d'extraction), alors l'onglet Commits devrait contenir votre (vos) nouveau(x) commit(s).

C'est pourquoi, avant de commencer à faire vos propres changements, vous devriez créer une branche pour chaque ensemble de changements que vous prévoyez de mettre dans une demande d'extraction. De cette façon, une fois que vous avez fait la demande d'extraction, vous pouvez créer une autre branche et continuer à travailler sur une autre tâche/fonctionnalité/mise à jour sans affecter la demande d'extraction précédente.

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