En git vous pouvez diriger la sortie de git-diff
entre deux commits comme celui-ci:
git diff fa1afe1 deadbeef > patch.diff
Envoyez le patch.diff
au développeur et le laisser git-apply
à son espace de travail comme celui-ci:
git apply patch.diff
Si l'autre développeur a déjà les validations disponibles dans son référentiel, il peut toujours les rediriger sans fusionner comme ceci:
git apply < git diff fa1afe1 deadbeef
Vous pouvez ensuite add et commit les changements dans la diff the usual way.
Maintenant vient ici la partie intéressante lorsque vous devez fusionner le patch de retour à la branche principale (qui est public). Considérez l'arbre de révision suivante où C*
est le patch appliqué à partir C
dans la branche principale:
A---B---C---D master, public/master
\
E---C*---F feature_foo
Vous pouvez utiliser git-rebase
mettre à jour la branche de sujet (dans cet exemple nommé feature_foo
) avec sa tête en amont. Ce que cela signifie est lorsque vous tapez dans ce qui suit:
git rebase master feature_foo
Git réorganiser l'arbre de révision comme celui-ci et appliquera aussi le patch lui-même:
A---B---C---D master, public/master
\
E*---F* feature_foo
La fusion de la branche amont sera désormais une Fusion rapide simple. Vérifiez également que les nouvelles validations E*
et F*
fonctionnent en tant que E
et F
respectivement.
Vous pouvez faire la même chose contre la branche d'un autre développeur en utilisant les mêmes étapes, mais au lieu de le faire sur un dépôt public, vous serez fetching révisions à partir du référentiel du développeur. De cette façon, vous n'aurez pas à demander à l'autre développeur un correctif s'il est déjà disponible à partir de ce qu'il a publié à son repo.
S'il vous plaît noter à jamais rebasage une branche publique parce que la commande de réécrire l'histoire git qui est quelque chose que vous ne voulez pas faire sur les branches que les gens dépendent et créer un désordre lors de la fusion de dépôts distants. N'oublie jamais non plus de integrate often afin que les autres membres de ton équipe puissent prendre part à tes changements.
Découvert par la suite que vous pouvez faire la même chose avec git format-patch pour formater un patch et git suis pour appliquer et valider le patch. Exemple: git format-patch -k --stdout R1 ... R2 | git am -3 -k – Spoike