J'ai un projet cloné d'une branche principale d'un référentiel distant remote_repo
. Je crée une nouvelle branche et je m'engage dans cette branche. D'autres programmeurs sont passés remote_repo
à la branche principale.
Je dois maintenant rebaser ma branche RB sur remote_repo
master.
Comment faire ça? Quelles commandes taper sur un terminal?
git
clone
git-rebase
Damir
la source
la source
Réponses:
Récupérez d'abord le nouveau maître dans le référentiel en amont, puis rebasez votre branche de travail sur celui-ci:
Mise à jour : veuillez consulter la réponse de Paul Draper pour une manière 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.
la source
Your branch and 'origin/b1' have diverged, # and have 3 and 2 different commits each, respectively.
semble qu'un autregit pull
soit nécessaire. Est-ce correct ou ai-je raté quelque chose ici?git rebase master
ne fera pas le même travail que la deuxième commande (git rebase origin/master
) carmaster
etorigin/master
pourrait bien pointer vers des validations différentes (surtout étant donné que la première commande a étégit fetch origin
, ce qui peut modifierorigin/master
).la source
git pull --rebase=interactive origin master
dev
et exécutéegit pull --rebase origin master
, seule la branchedev
va être modifiée, nonmaster
. La--rebase
documentation de l'indicateur indique qu'il tente derebase the current branch on top of the upstream branch after fetching
rien et rien sur la modification des branches de suivi locales.Après avoir validé les modifications apportées à votre succursale,
master
passez à la caisse et tirez-la pour obtenir ses dernières modifications du référentiel:Ensuite, vérifiez votre succursale et rebasez vos modifications sur
master
:... ou deux dernières commandes sur une seule ligne:
Lorsque vous essayez de repousser vers
origin/RB
, vous obtiendrez probablement une erreur; si vous êtes le seul à travaillerRB
, vous pouvez forcer la poussée:... ou comme suit si vous avez configuré git correctement:
la source
git push
passer-f
).Remarque: Si vous avez déjà une large connaissance du rebasage, utilisez ci-dessous une doublure pour un rebasage rapide. Solution: en supposant que vous êtes sur votre branche active et que vous êtes la seule personne à y travailler.
Résolvez tous les conflits, testez votre code, validez et envoyez de nouvelles modifications à la branche distante.
Les étapes suivantes peuvent aider quiconque est nouveau
git rebase
et souhaite le faire sans tracasÉtape 1: en supposant qu'il n'y a pas de validations et de modifications à effectuer sur YourBranch à ce stade. Nous visitons YourBranch.
Qu'est-il arrivé? Récupère toutes les modifications apportées par d'autres développeurs travaillant sur votre branche et rebase vos modifications par-dessus.
Étape 2: résoudre tous les conflits qui se présentent.
Étape 3:
Qu'est-il arrivé? 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 à être libéré! Et, préférez travailler uniquement sur le maître ou les succursales localement. Je recommande de le faire jusqu'à ce que vous obteniez un coup de main sur les modifications ou les validations de git. Remarque: Cette étape n'est pas nécessaire si vous ne gérez pas le maître local, mais vous pouvez effectuer une extraction et un rebase du maître distant directement sur la branche locale directement. Comme je l'ai mentionné en une seule étape au début.
Étape 4: résoudre tous les conflits qui se présentent.
Étape 5:
Qu'est-il arrivé? Le rebase sur le maître se produit
Étape 6: Résolvez tous les conflits, s'il y a des conflits. Utilisez
git rebase --continue
pour continuer le rebase après avoir ajouté les conflits résolus. À tout moment, vous pouvez utilisergit rebase --abort
pour abandonner le rebasage.Étape 7:
Qu'est-il arrivé? Apporter des modifications à votre télécommande YourBranch.
--force-with-lease
s'assurera qu'il y a d'autres changements entrants pour YourBranch d'autres développeurs pendant que vous rebasez. C'est super utile plutôt que de forcer la poussée. En cas de modifications entrantes, récupérez-les pour mettre à jour votre YourBranch local avant de pousser les modifications.Pourquoi dois-je pousser les changements? Pour réécrire le message de validation dans YourBranch distant après un rebasage approprié ou S'il y a des conflits résolus? Ensuite, vous devez transférer les modifications que vous avez résolues dans le référentiel local vers le référentiel distant de YourBranch
Yahoooo ...! Vous avez terminé avec succès le rebasage.
Vous pourriez également envisager de faire:
Quand et pourquoi? Fusionnez votre branche en maître si vous effectuez des modifications par vous et d'autres codéveloppeurs. Ce qui rend YourBranch à jour avec master lorsque vous souhaitez travailler sur la même branche plus tard.
la source
Pulls latest changes from remote master to local master. I always prefer keeping remote master clean and release ready always!
. Je mettrai à jour ma description.Étape 1:
Étape 2:
Étape 3: (Corrigez en cas de conflit)
Étape 4:
Étape 5:
la source
1.Mettez à jour le maître en premier ...
2.Bassez maintenant la source-branche avec la branche principale
SI la branche source n'existe pas encore sur la télécommande, alors:
"et voilà..."
la source
git fetch origin master:master
extrait la dernière version de master sans avoir à la vérifier.Il vous suffit donc:
git fetch origin master:master && git rebase master
👌la source
git fetch
jour le maître sans avoir besoin de le vérifier aussi? Sauf que les mises à jourgit fetch
ne sont-elles pasgit merge
correctes? Donc, si nous vérifions,master
il n'aura pas les dernières mises à jour. Alors, n'est-ce pas plus court à faire lorsque vous êtes sur une branche de fonctionnalité,git fetch
alorsgit rebase origin/master
? Nous ne pouvons pas le faire,git rebase master
car cela tentera de rebaser à partirmaster
de l'espace de travail, nous devonsorigin/master
obtenir du non fusionné mais assis dans le local.