web-dev-qa-db-fra.com

Comment rebaser une branche locale avec un maître distant

J'ai cloné le projet de la branche principale du référentiel distant remote_repo. Je crée une nouvelle branche et je m'engage dans cette branche. D'autres programmeurs ont poussé sur remote_repo pour créer une branche. Il me faut maintenant rebase mon RB de branche sur remote_repo master. Comment faire ça? Quelles commandes taper au terminal?

800
Damir

Commencez par rechercher le nouveau maître dans le référentiel en amont, puis référez-vous à votre branche de travail:

git fetch Origin            # Updates Origin/master
git rebase Origin/master    # Rebases current branch onto Origin/master

Mise à jour: Voir réponse de Paul Draper pour une façon plus concise de faire de même - les versions récentes de Git fournissent un moyen plus simple de faire l'équivalent des deux commandes ci-dessus.

1106
Frerich Raabe
git pull --rebase Origin master
# where --rebase[=(false|true|merges|preserve|interactive)]
743
Paul Draper

Une fois les modifications validées dans votre branche, effectuez un checkout master et extrayez les modifications du référentiel:

git checkout master
git pull Origin master

Ensuite, vérifiez votre branche et reformulez vos modifications sur le maître:

git checkout RB
git rebase master

ou les deux dernières commandes d'une ligne:

git rebase master RB
166
CharlesB

Note: Si vous avez déjà une connaissance étendue de rebase, utilisez ci-dessous une doublure pour un rebase rapide. Solution: En supposant que vous travailliez sur votre branche et que vous êtes la seule personne à y travailler.

git fetch && git rebase Origin/master

Résolvez tous les conflits, testez votre code, validez et transmettez les nouvelles modifications à la branche distante.

                            ~:   For noobs   :~

Les étapes suivantes pourraient aider les débutants en git rebase et souhaitant le faire sans tracas

Étape 1: En supposant qu’il n’y ait pas d’engagements et de modifications à apporter sur YourBranch à ce stade. Nous visitons YourBranch.

git checkout YourBranch
git pull --rebase

Que s'est-il passé? Extrait toutes les modifications apportées par les autres développeurs travaillant sur votre branche et rebase vos modifications.

Étape 2: Résolvez les conflits éventuels.

étape 3:

git checkout master
git pull --rebase

Que s'est-il passé? Extrait toutes les dernières modifications du maître distant et rebase le maître local sur le maître distant. Je garde toujours le maître à distance propre et prêt pour la publication! Et, préférez ne travailler que sur des maîtres ou des branches localement. Je vous recommande de le faire jusqu'à ce que vous obteniez un coup de main pour les modifications génitales ou les validations. Remarque: Cette étape n'est pas nécessaire si vous ne gérez pas le maître local. Vous pouvez également effectuer une recherche et rebaser le maître distant directement sur une branche locale. Comme je l'ai mentionné en une seule étape au début.

Étape 4: Résolvez les conflits éventuels.

étape 5:

git checkout YourBranch
git rebase master

Qu'est-ce qui s'est passé? Rebase on master

Étape 6: Résoudre les conflits éventuels. Utilisez git rebase --continue pour continuer à rebaser après avoir ajouté les conflits résolus. A tout moment, vous pouvez utiliser git rebase --abort pour abandonner la base.

étape 7:

git Push --force-with-lease 

Qu'est-ce qui s'est passé? Apporter des modifications à votre télécommande YourBranch. --force-with-lease s'assurera si d'autres développeurs ont apporté d'autres modifications à YourBranch lors de la modification de votre base. C'est super utile plutôt que de forcer. Si des modifications entrantes sont apportées, récupérez-les afin de mettre à jour votre YourBranch local avant de les appliquer.

Pourquoi ai-je besoin de pousser les modifications? Pour réécrire le message de validation dans YourBranch distant après une nouvelle base ou s'il y a des conflits résolus? Ensuite, vous devez envoyer les modifications que vous avez résolues dans le référentiel local au référentiel distant de YourBranch.

Yahoooo ...! Vous avez terminé avec succès le rebasement.

Vous pouvez également envisager de le faire:

git checkout master
git merge YourBranch

Quand et pourquoi? Fusionner votre branche en maître si cela est fait avec des modifications de votre part et de celles des autres co-développeurs. Ce qui permet à YourBranch de rester à jour avec master lorsque vous souhaitez travailler ultérieurement sur la même branche.

                            ~:   (๑ơ ₃ ơ)♥ rebase   :~
94
bh4r4th

git fetch Origin master:master extrait la dernière version du maître sans avoir besoin de l'extraire.

Donc tout ce dont vous avez besoin c'est:

git fetch Origin master:master && git rebase master ????

5
Naz

1.Mettre à jour Maître en premier ...

git checkout [branche principale]

git pull [branche principale]

branche-source 2.Now rebase avec branche master

git checkout [branche source]

git rebase [branche principale]

git pull [branche source] (branche distante/source)

git Push [branche source]

Si la branche source n'existe pas encore à distance, alors faites:

git Push -u Origin [branche source]

"et voila ..."

2
N Djel Okoye