Disons que nous avons la situation suivante dans Git:
Un référentiel créé:
mkdir GitTest2 cd GitTest2 git init
Certaines 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 hotfix1
Le 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 hotfix1
Le 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 rebase
semble être de la magie noire pour moi ....
git branch feature1
et git checkout feature1
pourrait être combiné en git checkout -b feature1
et 4. pourrait être entièrement réduit àgit checkout -b hotfix1 master
feature1
est complètement locale, jetez un œil àgit rebase
.