Si vous voulez tout savoir sur la façon de mettre à jour et maintenir des branches Git séparées, vous trouverez dans cet article toutes les informations dont vous avez besoin pour éviter toute complication lors de l’exécution de ces étapes.
L’une des principales fonctionnalités de Git est sans aucun doute la possibilité de créer et de maintenir plusieurs versions de notre projet. Les projets subissent constamment des bifurcations à court terme, appelées «branches» ou «branches de fonctionnalités», qui finissent généralement par fusionner dans un master. Cependant, il est parfois nécessaire d’avoir des branches vraiment distinctes, il peut alors devenir plus compliqué de les maintenir correctement synchronisées.
Nous allons maintenant vous donner plus d’informations sur ce sujet afin que vous ne rencontriez pas de complications supplémentaires.

Pourquoi est-il recommandé de conserver différentes branches ?
En général, les branches ont une durée limitée et sont destinées à fusionner ensemble lorsque la branche principale est publiée. Cependant, il existe certains scénarios où il est nécessaire de maintenir des branches qui sont en fait séparées. Par exemple, cela peut se produire lorsque vous souhaitez avoir des branches ciblant différentes plates-formes ou dépendances, avec certaines fonctionnalités ou simplement des branches de publication distinctes, qui sont maintenues en vie pendant un certain temps.
C’est le même flux de travail qui est suivi dans la grande majorité des bifurcations et, selon la quantité et la gravité des changements, il peut être difficile de rester en phase avec l’amont.
Cependant, il existe de nombreux scénarios où il est nécessaire de chercher des alternatives pour séparer les remèdes, car cela peut être fastidieux, surtout avec tous les conflits de fusion et tous les tests supplémentaires. Par exemple, si vous avez deux complications qui ciblent deux plateformes différentes, de nombreuses langues ont une configuration de complication et des processeurs qui ont la capacité de gérer cela. Dans le cas de C#, nous rencontrons des changements de code en fonction de la plate-forme à partir de laquelle vous compilez. #if NETVERSION.

Cependant, quelle que soit la raison, ce flux de travail Git valide est utilisé par un grand nombre de personnes.
Garder les branches en synchronisation avec la redirection
En résumé, nous pouvons dire qu’il existe deux options pour ce faire : la première et la plus courante est la méthode du rebasage, qui est similaire à la fusion, mais dans ce cas, les branches sont complètement indépendantes.
Dans ce cas, il est normal de considérer les nations Git comme une chaîne de modifications remontant dans le temps, chacune pointant vers un commit précédent. Lorsqu’une nouvelle branche est créée, elle se sépare de la branche principale à un point précis, qui est la base de la branche .master.
Le rebasage consiste à prendre la branche entière et à la déplacer vers un nouveau point dans le temps, où la fin de la branche pointe vers une chaîne différente de commits. Cela est surtout utile lorsque la branche bifurquée ne contient que très peu de commits, mais cela rendra les conflits de combinaison plus faciles à résoudre. Dans cet exemple, la bifurcation de la branche incorpore les commits B et C, mais pas D et E, comme on peut le voir dans l’image :

Cependant, le dépassement est constamment utilisé dans les branches et peut poser des problèmes lorsqu’il est utilisé avec des branches partagées. Les commits ne sont pas réellement déplacés, ils sont copiés, ce qui signifie de nouveaux ID de commit, et le gestionnaire de branche est déplacé vers un nouvel emplacement.
Comment mettre à jour et maintenir des branches Git ? Cela signifie que les commits précédents sont bloqués. Comme Git est un système de contrôle de version décentralisé, vos collègues peuvent avoir la possibilité d’obtenir des commits non poussés qui font référence aux commits supprimés.
Le changement de base devra être celui que tout contributeur coordonne, et si quelqu’un a un conflit, alors il devra le résoudre localement en copiant ces changements au mauvais endroit.
Il est important de noter que le dépassement d’une branche est assez simple. Il suffit de supprimer la branche, d’extraire les modifications de la télécommande, puis d’exécuter pour pouvoir déplacer la branche vers la branche cible.
git checkout feature
git pull
git rebase master
Il est fort probable que cela donne lieu à des conflits de fusion, que vous devrez résoudre par vous-même, puis valider toutes les modifications.
La grande majorité des tâches Git peuvent être effectuées assez facilement en utilisant la ligne de commande, le reciblage est une opération très visuelle, il est donc recommandé d’utiliser un client GIT GUIT tel que GitKraken et Fork. Cela vous permettra de voir les embranchements et vous aidera à planifier la base d’une manière plus simple et plus efficace, et vous pouvez même faire des bases interactives.

Puisque le rebasage est appliqué à chaque commit de la branche de fonctionnalité vers un nouvel emplacement, ils n’ont pas vraiment besoin d’être tous inclus, et la redirection interactive a la capacité de supprimer les commits inutiles. Il est possible de le faire en utilisant une ligne de commande, mais il est beaucoup plus logique d’utiliser une interface graphique.
Comment corriger les commits non désirés
Nous voulons maintenant vous donner des informations sur la façon de mettre à jour et de maintenir les branches Git séparées. Nous pensons donc qu’il y a quelques questions de base auxquelles nous devons répondre pour répondre à toutes les questions que vous pouvez avoir sur ce sujet.
Si vous avez des commits dans votre branche et que vous souhaitez les exclure lors du re-basing, vous pouvez créer une base interactive. Cela prendra soin de supprimer les commits non désirés lors du rebasement, principalement en les supprimant de l’historique.
Cependant, il est plus probable qu’il y aura des commits dans la branche que vous préféreriez ne pas avoir dans votre branche. En raison de la redirection, la branche est mise en place à partir de la nouvelle base de la branche à dépasser, il n’y a pas moyen de ne pas inclure les confirmations.
Dans le cas où il n’y a qu’une ou deux branches de commits que vous aimeriez ne pas avoir, alors vous pouvez très probablement rebaser de toute façon et le résoudre dans le conflit de fusion, le corriger manuellement, ou même avoir l’option de revenir sur le commit. Gi dispose d’une commande «revert» qui s’applique aux modifications inverses, notamment pour inverser un commit et faire comme s’il n’avait pas eu lieu. Afin de l’utiliser, vous pouvez trouver le commit que vous souhaitez rétablir : git log

Maintenant, il suffit de copier le hachage SHA1 et de rétablir le commit :
git revert 62ee517cc7c358eafbbffdebdde1b38dea92aa0f
Cela permettra de créer un «revert commit» dans la branche .feature.
Cherry-picking commits à une autre branche
Notez que le dernier scénario que vous pouvez rencontrer est celui où il n’y a que quelques commits que vous aimeriez avoir. Cela peut être très courant lors de la maintenance de branches pour différentes versions, car très souvent il y a des révisions qui doivent être appliquées à différentes versions, en particulier les anciennes versions du logiciel.
Cependant, c’est une méthode de synchronisation plus ennuyeuse et plus longue, car si vous ne gardez pas les branches au moins un peu synchronisées, il y a de fortes chances que le commit que vous incluez soit incompatible avec la branche précédente. Comment mettre à jour et maintenir des branches Git ?
Dans Git, nous disposons d’outils pour copier et coller des commits dans une branche différente. Dans ce cas, il s’agit de l’outil cherry-picking, qui permet d’extraire un seul commit de l’historique et de le sortir. D’une manière très similaire à la façon dont nous effectuons le rebasage, le cherry-picking peut créer de nouveaux commits copiés, mais Git est assez intelligent pour s’en rendre compte, et fusionnera même les branches plus tard.

Pour faire du «cherry-picking», vous devez obtenir l’identifiant du commit. Si l’historique des branches est compliqué, vous pouvez utiliser l’option for pour obtenir une représentation visuelle de votre historique, bien que le client GUI soit particulièrement utile pour des tâches comme celle-ci :
.git log—graph.
git log –pretty=format:»%h %s» –graph

Maintenant vous devez juste vous assurer qu’il est dans la branche et qu’il fonctionne avec l’ID du commit pour que vous puissiez le copier : .featurecherry-pick.
git checkout feature
git cherry-pick 1da76d3
Cela peut entraîner certains conflits que vous devrez contourner. Avec ces informations en tête, vous savez maintenant comment mettre à jour et maintenir des branches Git séparées.