Nous utilisons git et avons une branche principale et des branches de développeur. Je dois ajouter une nouvelle fonctionnalité, puis rebaser les commits vers le maître, puis pousser le maître vers le serveur CI.
Le problème est que si j'ai des conflits pendant le rebase, je ne peux pas pousser vers ma branche de développeur distante (sur Github) une fois le rebase terminé, jusqu'à ce que je tire ma branche distante. Cela provoque des validations en double. Lorsqu'il n'y a pas de conflit, fonctionne comme prévu.
question: après le rebase et la résolution des conflits, comment synchroniser mes branches de développeur locales et distantes sans créer de duplication de commits
Installer:
// master branch is the main branch
git checkout master
git checkout -b myNewFeature
// I will work on this at work and at home
git push origin myNewFeature
// work work work on myNewFeature
// master branch has been updated and will conflict with myNewFeature
git pull --rebase origin master
// we have conflicts
// solve conflict
git rebase --continue
//repeat until rebase is complete
git push origin myNewFeature
//ERROR
error: failed to push some refs to 'git@github.com:ariklevy/dropLocker.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
// do what git says and pull
git pull origin myNewFeature
git push origin myNewFeature
// Now I have duplicate commits on the remote branch myNewFeature
ÉDITER
Il semble donc que cela interrompra le flux de travail:
developer1 travaillant sur myNewFeature developer2 travaillant sur hisNewFeature utilisent tous deux master comme branche principale
developer2 fusionne myNewFeature dans hisNewFeature
developer1 rebase, résout les conflits, puis force les poussées vers la branche distante pour myNewFeature
quelques jours plus tard, developer2 fusionne à nouveau myNewFeature dans hisNewFeature
Cela incitera-t-il les autres développeurs à détester le développeur1?
force
la poussée)
rewriting history
, c'est unrebase
we
? faites-vous partie d'une équipe qui ne se limite pas à vous?they
dites (aux gens qui en savent plus que moi) que si vous partagez votre code, vous ne devriez pas l'utiliserrebase
. Pourquoi tu ne fais pas justegit pull
etgit merge
?