Ok donc je consortingbue à un projet sur github. Le projet sur github est en upstream
, mon repo fourchu sur github est origin
et mon repo local
sur mon ordinateur.
git checkout -b feature # Working on feature git commit -a -m 'only commit on feature'
puis je soumets une demande de tirage
git push origin master
La demande d’extraction est examinée et un changement sans rapport doit être effectué. Quelqu’un d’autre fait un commit et fusionne en upstream/master
Maintenant, le responsable upstream
me demande de “rebaser ma requête pull sur le maître”
Ceci est mon histoire (insérer l’effet sonore Law and Order) …..
Je n’ai apporté aucune modification à la demande d’extraction et c’est toujours la même fonctionnalité de validation sur la twig.
git checkout master git fetch upstream git checkout feature git rebase master => "Current branch feature is up to date." git push origin feature => "Everything up-to-date"
Je ne comprends pas. Comment cela est-il possible quand je sais que quelqu’un s’est engagé et a fusionné en upstream/master
après avoir poussé ma requête pull vers l’ origin/feature
?
Quelqu’un peut-il me dire quelle devrait être la procédure correcte dans cette situation?
Vous affichez uniquement une extraction sur le repo en amont. Cela ne met à jour en fait aucune de vos twigs locales. Il ne fait que mettre à jour vos connaissances en upstream
. Vous devez vous assurer que le stream upstream/master
est entièrement intégré dans votre master
, comme avec une git pull
, avant de procéder à une nouvelle conversion en master
, ou plus simplement en une nouvelle génération en upstream/master
.
C’est à dire:
git checkout master git pull upstream master git checkout feature git rebase master
ou
git checkout feature git rebase upstream/master
Mettre à jour:
Après avoir corrigé votre twig d’ feature
locale, vous devrez la ramener à l’ origin
pour terminer la mise à jour de la demande d’extraction. Comme vous avez déjà poussé la feature
une fois, vous ne pouvez pas simplement push
nouveau parce qu’une rebase change d’historique, et ce n’est plus un rapide. Normalement, si une poussée échoue avec un “non-accéléré”, vous résoudrez le problème en effectuant un tirage, mais une simple traction ne fera que combiner les deux histoires divergentes, ce qui n’est certainement pas ce que vous voulez. Cela signifierait que votre ancienne twig (pré-rebase) serait combinée avec la nouvelle (post rebase). Vous voulez écraser l’ origin/feature
avec l’état de la nouvelle twig, en vidant tout enregistrement de l’ancienne. Cela signifie que vous voudrez forcer le lancement, même s’il ne s’agit pas d’une avance rapide, en utilisant la git push -f origin feature
. Remarque: la force de poussée est dangereuse et vous pouvez perdre des commits avec elle. Utilisez-le uniquement si vous êtes absolument certain de savoir ce que vous faites, comme ici, où vous souhaitez intentionnellement supprimer les anciens commits inutiles dans la twig des feature
pré-rebase.
Maintenant, le responsable amont me demande de “rebaser ma requête pull sur le maître”
Notez que depuis septembre 2016, le responsable peut déclencher lui-même le rebase.
Voir ” Rebase et fusion des requêtes d’extraction ”
Lorsque vous sélectionnez la nouvelle option “Rebase and merge”, les commits provenant de la twig de la requête d’extraction sont redéfinis sur l’extrémité de la twig de base, puis la twig de base elle-même est transmise rapidement à cette tête nouvellement rebasée. Les rebasitions définissent automatiquement le committer des commits rebasés sur l’utilisateur actuel, tout en conservant intactes les informations de l’auteur. La twig de la requête d’extraction ne sera pas modifiée par cette opération.
Si une rebase ne peut être effectuée en raison de conflits, nous vous en informerons afin de pouvoir les résoudre manuellement si nécessaire.