Une nouvelle branche de master
est créé, nous l'appelons test
.
Il y a plusieurs développeurs qui s'engagent soit à master
ou créer d'autres branches et les fusionner plus tard dans master
.
Disons que le travail sur test
prend plusieurs jours et vous voulez continuer à garder test
mis à jour avec des commits dans master
.
Je ferais git pull origin master
de test
.
Question 1 : Est-ce la bonne approche ? D'autres développeurs auraient pu facilement travailler sur les mêmes fichiers que moi.
Mon travail sur test
est terminé et je suis prêt à le fusionner de nouveau avec master
. Voici les deux moyens auxquels je pense :
A :
git checkout test
git pull origin master
git push origin test
git checkout master
git pull origin test
B :
git checkout test
git pull origin master
git checkout master
git merge test
Je n'utilise pas --rebase
parce que d'après ce que j'ai compris, rebase récupérera les modifications de master
et empiler le mien par-dessus, ce qui pourrait écraser les changements faits par d'autres personnes.
Question 2 : Laquelle de ces deux méthodes est la bonne ? Quelle est la différence ?
Le but dans tout ça est de garder mon test
mis à jour avec les choses qui se passent dans master
et plus tard, je pourrais les fusionner à nouveau dans master
en espérant garder la chronologie aussi linéaire que possible.
27 votes
Non rebase n'écrase jamais, il essaie juste d'obtenir un historique plus propre. en rattachant (ou en falsifiant) l'historique au dernier point du maître
9 votes
Rebase n'écrase pas vos commits. Il annule vos commits, applique les commits de la branche master à votre branche test, puis applique vos commits à nouveau à test.
1 votes
Que faire si nous n'avons pas d'accès en écriture à master ? Y a-t-il un moyen de résoudre les conflits de manière préemptive sur la branche des fonctionnalités ? Probablement pas, je suppose, puisque les histoires ont probablement divergé.