Git

Comment Git Rebase

Comment Git Rebase
git rebase est un utilitaire de fusion tout comme git fusionner. Mais leur façon de travailler est différente.

Dans cet article, je parlerai du fonctionnement de Git rebase, des différences entre Git rebase et Git merge, et de la façon de travailler avec Git rebase. Alors, commençons.

Rebase Git :

Disons que vous avez un dépôt Git avec les commits UNE, B, C dans le Maître branche. Ensuite, vous avez créé une nouvelle branche une branche et ajouté 2 nouveaux commits et E au une branche branche.

Fig 1 : historique des commits initiaux.

Maintenant, disons que vous avez oublié d'ajouter quelque chose dans le Maître branche. Alors, vous retournez au Maître branche et ajouter un nouveau commit g au Maître branche. Votre historique git devrait ressembler à ceci.

Fig 2: historique des commits après l'ajout du commit G dans la branche master.

Tout a l'air bien. Maintenant, si vous vouliez toutes les modifications que vous avez apportées au une branche branche pour être dans le Maître branche, vous pouvez fusionner le une branche branche à la Maître branche. C'est ce que git fusionner fais.

Et si vous voulez le commit g être disponible dans le une branche branche? Eh bien, vous pouvez utiliser git rebase pour cela.

À partir de l'historique des commits de la figure 2, vous pouvez voir que la branche une branche commence à partir du commit C. Si vous faites un rebase git sur une branche, alors il commencerait à partir du commit g comme le montre la figure 3 ci-dessous. Notez que le contenu du commit et E changera également après l'opération de rebase. Les commits et E inclura les changements de commit g. C'est pourquoi j'ai ajouté * symbole avant les commits et E.

Si vous voulez savoir à quoi ressemblerait l'historique des commits si je le fusionnais, jetez un œil à la figure 4. Je l'ai inclus juste pour que vous puissiez le comparer avec git rebase.

Fig 4: historique des commits si git merge a été utilisé.

Maintenant que vous savez ce qu'est git rebase, la différence entre git rebase et git merge et pourquoi git rebase l'a utilisé, je vais vous montrer comment l'utiliser dans la section suivante de cet article ci-dessous.

Flux de travail Git Rebase :

Dans cette section, je vais créer un nouveau référentiel git sur mon ordinateur local et vous montrer comment fonctionne git rebase. Je vous recommande d'avoir une bonne compréhension de git rebase avant de l'appliquer sur votre projet.

Tout d'abord, créez un nouveau dépôt Git démo-rebase/ sur votre ordinateur comme suit :

$ git init rebase-demo

Maintenant, naviguez jusqu'au démo-rebase/ répertoire comme suit :

$ cd rebase-demo/

Maintenant, créez un nouveau fichier test.SMS comme suit:

$ echo "A" > test.SMS

Le test.txt ne contient qu'une seule ligne UNE. Disons que c'est votre code de projet initial.

Maintenant, validez les modifications comme suit :

$ git ajouter .
$ git commit -m 'A'

Maintenant, ajoutez une autre ligne B au test.SMS fichier comme indiqué dans la capture d'écran ci-dessous.

Maintenant, validez les modifications comme suit :

$ git ajouter .
$ git commit -m 'B'

Maintenant, ajoutons une autre ligne C au test.SMS déposer.

En outre, validez les modifications comme suit :

$ git ajouter .
$ git commit -m 'C'

Maintenant, l'historique des commits de la branche master devrait ressembler à ceci :

$ git log --oneline

Maintenant, disons que vous avez de nouvelles idées que vous voulez essayer. Alors, créons et récupérons dans une nouvelle branche nouvelle fonctionnalité comme suit:

$ git checkout -b nouvelle fonctionnalité

Maintenant, ajoutez votre nouvelle idée (la ligne disons) au test.SMS déposer.

Maintenant, validez les modifications comme suit :

$ git ajouter .
$ git commit -m 'D'

Maintenant, ajoutez la ligne E au test.SMS déposer.

Validez les modifications comme suit :

$ git ajouter .
$ git commit -m 'E'

Maintenant, l'historique des commits du nouvelle fonctionnalité branche devrait ressembler à ceci :

$ git log --oneline

Voir comment les commits sont dans l'ordre A < B < C < D < E?

Maintenant, vous vous souvenez que vous avez oublié d'ajouter quelque chose au Maître branche que vous vouliez aussi être dans le nouvelle fonctionnalité branche! Alors, passez à la caisse Maître branche.

J'ai ajouté une nouvelle ligne à la fin du test.SMS fichier comme vous pouvez le voir.

Maintenant, validez les modifications comme suit :

$ git ajouter .
$ git commit -m 'G'

Maintenant, l'historique des commits du Maître la branche devrait ressembler à ceci.

UNE < B < C < G

Maintenant, pour rebaser les commits du Maître branche à la nouvelle fonctionnalité succursale, premier paiement à la nouvelle fonctionnalité branche.

$ git checkout nouvelle fonctionnalité

Maintenant, faites un rebase git du Maître branche comme suit :

$ git rebase master

Certains fusionnent des conflits! Réparons ça.

Eh bien, les modifications que j'ai apportées au commit g et sont en conflit les uns avec les autres. je veux garder les deux.

Après avoir résolu le conflit de fusion, le test.SMS le fichier doit ressembler à ceci :

Maintenant, ajoutez les modifications à la zone de transit comme suit :

$ git ajouter .

Maintenant, continuez le rebase en procédant comme suit :

$ git rebase --continue

Un autre conflit de fusion! Eh bien, cela peut arriver. Rebase modifie l'historique des commits git. Donc, des choses comme ça sont attendues.

Il semble que le processus de fusion ait échoué en raison de quelques lignes vides. Réparons ça.

Après avoir résolu le conflit de fusion, le test.SMS le fichier doit ressembler à ceci.

Maintenant, ajoutez les modifications à la zone de transit comme suit :

$ git ajouter .

Maintenant, continuez l'opération de rebase comme suit :

$ git rebase --continue

La rebase Git est terminée.

Comme vous pouvez le voir, l'historique des commits de la branche new-feature est mis à jour. Maintenant, l'historique des commits est le suivant :

UNE < B < C < G < D < E

Comme prévu.

Le final test.SMS le fichier doit ressembler à ceci.

Git rebase est un outil puissant. Mais, vous ne devriez jamais l'utiliser sur des référentiels Git partagés. Utilisez-le uniquement sur les référentiels Git sur lesquels vous travaillez uniquement. Sinon, vous rencontrerez beaucoup de problèmes en cours de route.

Alors, c'est comme ça que vous utilisez git rebase. Merci d'avoir lu cet article.

Comment inverser le sens de défilement de la souris et des pavés tactiles dans Windows 10
Souris et Pavé tactiles rendent non seulement l'informatique facile, mais plus efficace et moins chronophage. Nous ne pouvons pas imaginer une vie san...
Comment changer la taille, la couleur et le schéma du pointeur et du curseur de la souris sous Windows 10
Le pointeur et le curseur de la souris dans Windows 10 sont des aspects très importants du système d'exploitation. Cela peut également être dit pour d...
Moteurs de jeux gratuits et open source pour le développement de jeux Linux
Cet article couvrira une liste de moteurs de jeux gratuits et open source qui peuvent être utilisés pour développer des jeux 2D et 3D sur Linux. Il ex...