Copier les commits d'une autre branche dans Git
Vient le moment où, en travaillant dans Git, nous voulons intégrer des commits spécifiques et individuels d’une branche à notre branche HEAD
actuelle. Cela peut être dû au fait que le client souhaite apporter des modifications à un produit ou à tout bogue signalé.
Soit nous l’avons commité par erreur, soit nous ne voulons plus ce commit dans notre branche précédente et le voulons dans notre branche HEAD
actuelle.
La réponse au problème ci-dessus est CHERRY PICK. Ainsi, dans les sections suivantes, nous discuterons en détail de la commande cherry-pick
.
Copier les commits d’une autre branche dans Git
Prendre un commit particulier d’une branche et le copier dans notre branche HEAD
actuelle s’appelle Cherry Picking.
Git a une commande particulière à cet effet, c’est-à-dire la commande cherry-pick
de Git. L’autre utilisation du cherry-picking est d’appliquer des modifications spécifiques avant de fusionner ou de développer une pull request.
Cela peut être très utile pour annuler les modifications.
Cet article discutera de la sélection d’un commit spécifique d’une branche à une autre.
Afficher les commits à l’aide de la commande git log
Tout d’abord, nous utiliserons le git log
pour déterminer quel commit nous voulons choisir. Voici le résultat de la branche de la commande git log
:
d23216 - 953222 - 953219 - aa3s36 - 532d37 [master]
\
76cada - 66ecb3 - b886a0 [feature]
Ici dans la branche feature
, il y a un commit 66ecb3
d’une autre branche que nous ne voulons que dans notre branche master
.
Choisissons ce commit spécifique et transférons-le dans la branche actuelle, la branche master
. Ensuite, nous pouvons utiliser ces changements de validation à l’avenir pour notre projet.
Exécutez la commande git cherry-pick
pour copier les commits
Ici, git cherry-pick
viendra à notre rescousse. 66ecb3
est la cerise sur le gâteau, et nous voulons la choisir parmi de nombreuses poussées qui ont été faites dans le passé.
Prenons-le dans une autre branche en exécutant la commande suivante.
git checkout master
git cherry-pick 66ecb3
Une fois que la commande ci-dessus est exécutée avec succès, maintenant, 66ecb3
agit comme un nouveau commit dans notre branche master.
Git a donc fait une copie du commit dont nous avions besoin, avec les mêmes messages de commit et modifications sur la branche master
. Finalement, un nouveau commit avec son nouvel ID est créé.
Nettoyer l’autre branche à l’aide de la commande git reset
Si nous passons à la branche feature
, nous verrons le même commit à son ancien emplacement. C’est parce que Git l’a copié dans l’autre branche plutôt que de le déplacer.
Il a laissé celui d’origine intact.
Maintenant, pour le nettoyage et l’annulation, nous utiliserons la commande git reset
après avoir vérifié la branche requise.
$ git checkout Test
Switched to branch 'Test'
$ git reset --hard HEAD~1
HEAD is now at 66ecb3 Change the title and delete the error page
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn