Squash à un seul “bon” s'engagent pour une pull request sur github.

J'ai un repo github qui quelqu'un d'autre (Bob, pour la clarté de l'exposé) a émis une demande d'extraction pour. Son code n'est pas parfait, donc nous passons par quelques tours de marquage. Comme je le comprends, il s'engage et pousse à son pull-demande pour chaque ensemble de modifications.

Donc mon référentiel ressemble maintenant à ceci:

master: ---o A (Chowlett
           |
           |
pull-req:  o---o---o---o
               B   C   D (all Bob)

Commettre SHAs et msgs sont comme suit:

Un:

123456 Good commit <chowlett>

B:

777ccc Fix the widget bug <bob>

C:

888ddd Review markups <bob>

D:

999eee Further markups <bob>

Je suis maintenant heureux d'accepter cette demande d'extraction; mais j'avais plutôt le pré-balisage versions n'étaient pas dans mon repo. Puis-je réaliser toutes les opérations suivantes; et comment?

  • De fusion B, C & D sur mon repo comme un seul commit
  • Générer de la "Fusion pull request #99 en ..." s'engager ainsi
  • Ont github fermer automatiquement la demande de pull
  • Demander à l'intervenant de rebase les modifications dans un seul commit et de fusion que l'on.
  • n'est-ce pas aller à l'encontre de "ne pas rebase un commit qui a été poussé à distance" dicton?
  • C'est une bonne règle de pouce, mais il n'est pas dangereux quand la distance n'a pas été fusionnées et personne d'autre ne l'utilise.
  • Hmm, ok. Donc, Bob pourrait juste rebase -i 123456, squash, C et D, puis push -f? Et github permettrait de mettre à jour ce qui était dans le pull request?
  • Oui, c'est exactement ce qui allait se passer. Parfois, les commentaires dans la demande d'extraction peut se foiré, particulièrement si vous avez fait des commentaires sur des lignes spécifiques dans le commit, mais sinon, ce sera très bien.
  • Ou Bob pourraient pousser l'écrasé s'engage à une autre branche, ouvrez une nouvelle demande d'extraction et de fermer le premier.
  • Ok, merci. Si vous ou Jérémie veux faire qu'une réponse, je vais joyeusement upvote, et d'accepter l'un d'eux.
  • idem.
  • Comment voulez-vous faire "Ou Bob pourraient pousser l'écrasé s'engage à une autre branche de la" exactement? J'ai ce problème aussi: je veux livrer un nettoyage d'une validation pull request, mais je ne veux pas perdre mon la direction du développement de l'histoire par l'écraser. Il me semble qu'à chaque amont référentiel propriétaire sur github demande contributeurs à la courge leur livraison, mais cela semble en arrière pour moi.
  • Voir, par exemple, github.com/anaran/devtools-snippets/network où j'ai essayé de créer un seul s'engager dans issue35take2 à l'aide de git checkout -B issue35take2 master && git merge --no-ff devtools_import_export. Néanmoins, la demande d'extraction en amont/master contient chaque commit de devtools_import_export.
  • veuillez ouvrir une nouvelle question.
  • J'ai essayé de répondre à la place.

InformationsquelleAutor Chowlett | 2012-07-09