Disons que nous avons la situation suivante dans Git:
Un référentiel créé:
mkdir GitTest2 cd GitTest2 git initCertaines modifications dans le master ont lieu et sont validées:
echo "On Master" > file git commit -a -m "Initial commit"Feature1 a dérivé le maître et certains travaux sont effectués:
git branch feature1 git checkout feature1 echo "Feature1" > featureFile git commit -a -m "Commit for feature1"Pendant ce temps, un bogue est découvert dans le code maître et une branche de correctif est établie:
git checkout master git branch hotfix1 git checkout hotfix1Le bug est corrigé dans la branche du correctif et fusionné dans le maître (peut-être après une demande de pull / révision de code):
echo "Bugfix" > bugfixFile git commit -a -m "Bugfix Commit" git checkout master git merge --no-ff hotfix1Le développement de feature1 se poursuit:
git checkout feature1
Disons que j'ai besoin du correctif dans ma branche de fonctionnalités, peut-être parce que le bogue s'y produit également. Comment puis-je y parvenir sans dupliquer les validations dans ma branche de fonctionnalités?
Je veux éviter d'obtenir deux nouveaux commits sur ma branche de fonctionnalité qui n'ont aucun rapport avec l'implémentation de la fonctionnalité. Cela me semble particulièrement important si j'utilise des demandes de tirage: tous ces commits seront également inclus dans la demande de tirage et doivent être revus bien que cela ait déjà été fait (car le correctif est déjà dans le maître).
Je ne peux pas faire de git merge master --ff-only: "fatal: impossible d'avancer rapidement, avorter.", Mais je ne sais pas si cela m'a aidé.
git rebasesemble être de la magie noire pour moi ....
git branch feature1et git checkout feature1pourrait être combiné en git checkout -b feature1et 4. pourrait être entièrement réduit àgit checkout -b hotfix1 master
feature1est complètement locale, jetez un œil àgit rebase.