recherche

Git Branch: un outil pour une collaboration efficace

Cet article est extrait du livre "Jump Start Git", qui est disponible gratuitement aux membres de SitePoint Premium. Les livres physiques sont disponibles dans les grandes librairies du monde entier, et vous pouvez également les commander ici. J'espère que vous l'aimez et en profitez!

Dans le chapitre 1, j'ai parlé de ma peur initiale d'essayer de nouvelles choses dans mon projet. Et si vous essayez des fonctionnalités ambitieuses mais brisez la pièce qui fonctionnait auparavant? La fonction de branchement de Git résout parfaitement ce problème.

Résumé des points clés

  • Git Branch permet de créer une copie du projet à expérimenter sans affecter le projet d'origine. Si l'expérience réussit, il est facile de fusionner des éléments expérimentaux dans la branche principale.
  • Les branches
  • permettent de traiter plusieurs tâches simultanément sans interférer les uns avec les autres. Ceci est très utile en attendant l'approbation d'une fonctionnalité tout en nécessitant un traitement d'une autre fonctionnalité. La branche peut également rendre le code plus facile à comprendre en séparant différentes idées.
  • Créez une branche dans git en utilisant la commande git branch [分支名称]. Passez à cette branche pour utiliser git checkout [分支名称]. La suppression des branches utilise git branch -D [分支名称], mais il est recommandé de ne pas supprimer les branches sauf si nécessaire.
  • La fusion des branches dans GIT est un processus simple. Après s'assurer que la branche requise est active, utilisez la commande git merge [分支名称]. Cependant, cela peut créer des boucles dans l'histoire du projet, qui peuvent être difficiles à naviguer dans les grandes équipes. Le chapitre suivant explorera une méthode de fusion qui ne crée pas de boucles.

Qu'est-ce qu'une branche?

Créer une nouvelle branche dans le projet signifie essentiellement créer une copie du projet. Vous pouvez utiliser cette copie pour expérimenter sans affecter le projet d'origine. Donc, si l'expérience échoue, vous pouvez l'abandonner et revenir au projet d'origine - la branche principale.

Mais si l'expérience réussit, Git peut facilement fusionner les éléments expérimentaux dans la branche principale. Et, plus tard, si vous changez d'avis, vous pouvez facilement restaurer à l'état du projet avant la fusion.

Par conséquent, les branches en GIT sont des chemins de développement indépendants. Vous pouvez créer de nouveaux engins dans une branche sans affecter d'autres branches. La facilité d'utilisation des branches est l'une des meilleures fonctionnalités de Git. (Bien que d'autres options de contrôle de version (telles que CVS) aient également des options de branche, l'expérience de la fusion des branches sur CVS est très fastidieuse. Si vous avez de l'expérience en utilisant des branches dans d'autres systèmes de contrôle de version, soyez assuré que l'utilisation de branches dans GIT est complètement différente. )

Dans GIT, vous êtes dans la branche principale par défaut. Le nom "Master" ne signifie pas qu'il est supérieur de quelque manière que ce soit. Ce n'est qu'un dicton conventionnel.

REMARQUE: Accord de branche

Bien que vous soyez libre d'utiliser différentes branches comme branches de base de Git, les gens s'attendent généralement à trouver le dernier code pour un projet spécifique dans la branche principale.

Vous pourriez affirmer qu'aucune branche n'est nécessaire en raison de la capacité de retourner à un commit. Mais imaginez que vous devez montrer votre travail à votre superviseur tout en développant une nouvelle fonctionnalité qui ne fait pas partie du travail que vous avez fait. Étant donné que la branche est utilisée pour séparer différentes idées, elle rend le code du référentiel facile à comprendre. De plus, les branches vous permettent de conserver des commits importants uniquement dans la branche maître ou maître.

Une autre utilisation des branches

est qu'elles vous permettent de gérer plusieurs choses en même temps sans interférer les uns avec les autres. Supposons que vous ayez soumis la fonctionnalité 1 pour examen, mais il faudra du temps à votre superviseur pour l'examiner. En même temps, vous devez gérer la fonction 2. Dans ce cas, la branche est utile. Si vous travaillez sur votre nouvelle idée sur une nouvelle branche, vous pouvez revenir à votre branche précédente à tout moment pour restaurer le référentiel à son état précédent, qui ne contient aucun code lié à votre idée.

Commençons maintenant à utiliser des branches en git. Pour afficher la liste des branches et la branche actuelle que vous utilisez, exécutez la commande suivante:

<code>git branch</code>

Si vous avez cloné votre référentiel ou configurez un référentiel distant, vous pouvez également voir la branche distante. Il suffit d'ajouter -a:

après la commande ci-dessus
<code>git branch -a</code>

Jump Start Git: Branching in Git

Comme indiqué ci-dessus, les branches rouges indiquent qu'elles sont situées dans le référentiel distant. Dans notre exemple, nous pouvons voir les différentes branches qui existent dans le référentiel distant d'origine.

Créer une branche

Il existe plusieurs façons de créer des branches dans GIT. Pour créer une nouvelle branche et le garder dans la branche actuelle, exécutez la commande suivante:

<code>git branch test_branch</code>

Ici, test_branch est le nom de la branche qui a été créé. Cependant, après avoir exécuté <code>git branch</code>, il semble que la branche active soit toujours la branche principale. Pour modifier la branche active, nous pouvons exécuter la commande de caisse (comme indiqué ci-dessous):

<code>git checkout test_branch</code>

Jump Start Git: Branching in Git

Vous pouvez également combiner les deux commandes ci-dessus pour créer et consulter une nouvelle branche dans une commande en ajoutant -B après la commande de paiement:

<code>git checkout -b new_test_branch</code>

Jump Start Git: Branching in Git

La succursale que nous venons de créer est basée sur le dernier engagement de la branche actuellement active (dans ce cas la branche principale). Si vous souhaitez créer une branche (par exemple cafb55d) sur la base d'un engagement (par exemple old_commit_branch), vous pouvez exécuter la commande suivante:

<code>git checkout -b old_commit_branch cafb55d</code>

Jump Start Git: Branching in Git

pour renommer la branche actuelle à renamed_branch, exécutez la commande suivante:

<code>git branch -m renamed_branch</code>

Supprimer la branche

Pour supprimer une branche, exécutez la commande suivante:

<code>git branch</code>

Jump Start Git: Branching in Git

Remarque: ne supprimez pas les branches sauf si nécessaire

Puisqu'il n'y a en fait aucun inconvénient à garder les branches, je recommande de ne pas les supprimer à moins que le nombre de branches du référentiel ne devienne trop grand pour gérer.

L'option -D utilisée ci-dessus supprimera la branche même si la branche n'est pas synchronisée avec la branche distante. Cela signifie que si vous avez un engagement qui n'a pas été poussé dans votre branche actuelle, -D supprimera toujours votre branche sans aucun avertissement. Pour vous assurer de ne pas perdre de données, vous pouvez utiliser -d comme alternative à -D. -d Supprimer les branches uniquement si elles ont été synchronisées avec les branches distantes. Étant donné que nos branches ne sont pas encore synchronisées, voyons ce qui se passe si nous utilisons -d, comme indiqué ci-dessous:

Jump Start Git: Branching in Git

Comme vous pouvez le voir, Git vous avertira et interdit l'opération car les données n'ont pas été fusionnées avec la branche.

Branches et tête

Maintenant que nous avons l'occasion d'essayer les bases de la ramification, prenons un moment pour discuter du fonctionnement des branches dans Git et introduire un concept important: la tête.

Comme mentionné ci-dessus, les succursales ne sont que des liens entre différents engins, ou par la voie de la validation. Il convient de noter que lors de l'utilisation d'une succursale, la tête de la branche pointe vers le dernier engagement de la branche. Je mentionnerai la tête plusieurs fois dans les chapitres suivants. Dans Git, le chef indique le dernier engagement de la succursale. En d'autres termes, il fait référence au sommet de la branche.

La succursale est essentiellement un pointeur vers un engagement qui a un engagement parent, un commit grand-parent, etc. Cette chaîne de validation forme le chemin que j'ai mentionné ci-dessus. Alors, comment relier les branches et la tête? Eh bien, le haut de la tête et la branche actuelle pointent vers le même engagement. Regardons un graphique pour illustrer cette idée:

Jump Start Git: Branching in Git

Comme indiqué ci-dessus, branch_A est initialement une branche active, et les points de tête pour commettre C. La validation a est la validation de base, sans aucun engagement parent, de sorte que les engagements dans branch_A sont organisés dans l'ordre inverse dans le temps (qui constitue également le chemin que j'ai mentionné ci-dessus) sont C → B → A. Le commit dans branch_B est E → D → B → A. Head indique le dernier engagement de la branche active branch_A, c'est-à-dire commettre C. Lorsque nous ajouterons un engagement, il sera ajouté à la branche active. Après avoir engagé, branch_A pointe vers F, et la branche suit F → C → B → A, tandis que branch_B reste le même. Head pointe maintenant pour commettre F. Encore une fois, lorsque nous ajoutons un autre engagement, les modifications sont démontrées sur la figure.

Branche avancée: fusion de la branche

Comme mentionné précédemment, l'un des plus grands avantages de Git est qu'il est particulièrement facile de fusionner les succursales. Voyons maintenant comment cela se fait.

Nous créerons deux nouvelles branches - new_feature et another_feature - et ajouterons des validations virtuelles. La vérification de l'historique de chaque branche nous montre que la branche another_feature mène un seul engagement comme suit:

Jump Start Git: Branching in Git

Cette situation peut être représentée dans la figure ci-dessous. Chaque cercle représente un engagement, et le nom de la branche pointe vers sa tête (haut de la branche).

Jump Start Git: Branching in Git

pour fusionner new_feature avec la branche principale, exécutez la commande suivante (assurez-vous d'abord que la branche principale est active):

<code>git branch</code>

Les résultats peuvent être présentés dans la figure ci-dessous:

Jump Start Git: Branching in Git

pour fusionner another_feature avec new_feature, il suffit d'exécuter la commande suivante (assurez-vous que la branche new_feature est active):

<code>git branch -a</code>

Les résultats peuvent être présentés dans la figure ci-dessous:

Jump Start Git: Branching in Git

Astuce importante: faites attention au cycle

L'image ci-dessus montre que cette fusion crée une boucle à travers deux engagements dans l'historique de votre projet où le flux de travail diverge et converge respectivement. Ces boucles peuvent ne pas être un problème lorsque vous travaillez seul ou en petites équipes. Cependant, dans une équipe plus grande - il peut y avoir beaucoup de validations puisque vous avez dévié de la branche principale - cette grande boucle rend difficile la navigation sur l'histoire et la compréhension des changements. Nous explorerons les moyens de fusionner les branches à l'aide de la commande Rebase sans créer de boucles dans le chapitre 6.

Jump Start Git: Branching in Git

Il n'y a pas de "conflit" dans cette fusion. La raison est simple, aucun nouveau engagement n'est ajouté à la branche another_feature par rapport à la branche new_feature. Les conflits en GIT se produisent lorsque la même partie du même fichier est modifiée dans les engagements non publics dans les deux succursales. Git lance des conflits pour vous assurer de ne perdre aucune donnée.

Nous discuterons en détail des conflits dans le chapitre suivant. Comme je l'ai mentionné plus tôt, les branches peuvent être visualisées avec des chemins de validation simples. Lorsque nous fusions les succursales et qu'il n'y a pas de conflits, comme ci-dessus, seul le chemin de la branche change et la tête de la branche est mise à jour. C'est ce qu'on appelle une fusion rapide de type avant.

Une autre façon de fusionner les branches est la fusion non rapide, en ajoutant --no-ff après la commande de fusion. De cette façon, un nouvel commit est créé sur la branche sous-jacente avec des changements d'une autre branche. Vous devez également spécifier le message de soumission:

<code>git branch</code>

Dans l'exemple ci-dessus, le premier (fusion new_feature avec la branche principale) est une fusion rapide, tandis que la seconde est une fusion non rapide avec un engagement de fusion.

Bien que les fusions de style à avant rapide soient par défaut, il est généralement préférable d'utiliser une méthode avant-gardiste pour les fusions fusionnées vers la branche principale. À long terme, l'identification de nouveaux engins qui fusionnent de nouvelles fonctionnalités peuvent être bénéfiques car il sépare logiquement la partie de code responsable des nouvelles fonctionnalités en un seul engagement.

Conclusion

Qu'avez-vous appris?

Dans ce chapitre, nous discutons de ce que sont les branches et comment les gérer en Git. Nous avons examiné la création, la modification, la suppression et la fusion des branches.

Quelle est la prochaine étape?

J'ai déjà parlé de la façon dont Git est bon pour les développeurs qui travaillent avec des équipes. Ceci est exploré plus en détail dans le chapitre suivant, ainsi que les opérations et commandes GIT spécifiques qui sont souvent utilisées dans des équipes distribuées.

FAQ sur la branche git

  • Quel est le but principal de la branche Git?

Git Branch est une fonctionnalité puissante qui permet aux développeurs de créer des lignes de développement distinctes. Ceci est particulièrement utile lorsque vous traitez de nouvelles fonctionnalités ou correctifs, car il vous permet d'isoler votre travail à partir du projet principal. Une fois la fonction ou le correctif terminé et testé, il peut être fusionné au projet principal. Cela garantit que le projet principal reste stable et permet à plusieurs développeurs de gérer les différentes fonctions simultanément sans interférer les uns avec les autres.

  • Comment créer une nouvelle branche dans GIT?

Créer une nouvelle branche dans GIT est simple. Vous pouvez utiliser la commande <code>git branch</code> suivie du nom de la nouvelle branche. Par exemple, git branch new_feature créera une nouvelle branche appelée "new_feature". Pour passer à cette branche, vous pouvez utiliser la commande git checkout comme suit: git checkout new_feature.

  • Comment fusionner les branches dans GIT?

Merger les branches en git en utilisant la commande git merge. Avant de fusionner, vous devez être sur la branche sur laquelle vous souhaitez fusionner. Par exemple, si vous souhaitez fusionner une branche nommée "new_feature" dans une branche "maître", vous devez d'abord passer à la branche principale à l'aide de git checkout master, puis utiliser la commande git merge new_feature.

  • Qu'est-ce qu'un pointeur de branche git et comment ça marche?

Git Branch Pointer est un fichier contenant le hachage SHA1 Commit. Lorsque vous créez une nouvelle branche, Git crée un nouveau pointeur et le déplace avec chaque nouvel engagement que vous faites. Cela permet à Git de suivre l'histoire du projet.

  • Comment supprimer une branche dans GIT?

Supprimer une branche en git en utilisant la commande git branch -d suivie du nom de la branche. Par exemple, git branch -d old_feature supprimera une branche nommée "Old_Feature". Cependant, si une branche a un engagement qui n'a pas été fusionné dans une autre branche, Git vous empêchera de supprimer la branche. Pour forcer la suppression, vous pouvez utiliser l'option -D.

  • Quelle est la différence entre une fusion rapide et une fusion tripartite en Git?

La fusion rapide en avant dans GIT est possible lorsqu'il y a un chemin linéaire de la pointe de la branche actuelle à la branche cible. Au lieu de créer un nouvel engagement, Git déplace le pointeur de branche actuel vers la branche cible. D'un autre côté, lorsqu'il n'y a pas de chemin linéaire, une fusion tripartite est utilisée. Git créera un nouvel engagement avec deux parents, reliant efficacement les deux branches.

  • Comment afficher toutes les branches dans un référentiel GIT?

Vous pouvez afficher toutes les branches du référentiel GIT à l'aide de la commande <code>git branch</code> sans paramètres. Cela énumèrera toutes les succursales locales. Si vous souhaitez également afficher les branches distantes, vous pouvez utiliser l'option -a comme suit: <code>git branch -a</code>.

  • Comment renommer une branche en git?

Renommez une branche dans Git en utilisant la commande git branch -m suivie des anciens et nouveaux noms. Par exemple, git branch -m old_name new_name renommera la branche "old_name" à "new_name".

  • Qu'est-ce que la tête de séparation en git et comment l'éviter?

La tête désastreuse dans GIT se produit lorsque vous vérifiez un engagement au lieu d'une branche. Cela peut être dangereux car lorsque vous consultez une autre branche, toutes les modifications que vous apportez seront perdues. Pour éviter cela, assurez-vous de toujours consulter la branche au lieu de vous engager.

  • Comment résoudre les conflits lors de la fusion des branches dans GIT?

Lors de la fusion de branches dans GIT, des conflits peuvent se produire si la même partie du même fichier est modifiée dans les deux branches. Git marquera le fichier comme "non fusionné", vous devez résoudre le conflit manuellement. Vous pouvez le faire en ouvrant le fichier dans un éditeur de texte, en trouvant la marque de conflit () et en décidant des changements à conserver. Une fois que tous les conflits sont résolus, vous pouvez ajouter le fichier à l'aide de <code>git add et le soumettre en utilisant git commit.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Top 21 newsletters du développeur auquel s'abonner en 2025Top 21 newsletters du développeur auquel s'abonner en 2025Apr 24, 2025 am 08:28 AM

Restez informé des dernières tendances technologiques avec ces meilleurs bulletins de développeur! Cette liste organisée offre quelque chose pour tout le monde, des amateurs d'IA aux développeurs assaisonnés du backend et du frontend. Choisissez vos favoris et gagnez du temps à la recherche de rel

Pipeline de traitement d'image sans serveur avec AWS ECS et LambdaPipeline de traitement d'image sans serveur avec AWS ECS et LambdaApr 18, 2025 am 08:28 AM

Ce tutoriel vous guide dans la création d'un pipeline de traitement d'image sans serveur à l'aide de services AWS. Nous allons créer un frontend Next.js déployé sur un cluster ECS Fargate, en interagissant avec une passerelle API, des fonctions lambda, des seaux S3 et DynamoDB. Ème

Pilote CNCF ARM64: impact et perspectivesPilote CNCF ARM64: impact et perspectivesApr 15, 2025 am 08:27 AM

Ce programme pilote, une collaboration entre le CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal et ACTUTIE, rationalise ARM64 CI / CD pour les projets GitHub CNCF. L'initiative répond aux problèmes de sécurité et aux performances LIM

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP