Git est un système de contrôle de version distribué, un outil permettant de suivre les modifications apportées à un ensemble de fichiers ou de coordonner le travail au fil du temps. Il est souvent utilisé par les programmeurs pour coordonner les modifications apportées au code source du logiciel et la meilleure partie de celle-ci. il peut être utilisé pour suivre tout type de contenu. Il est spécialement conçu pour gérer tout type de projet, du plus petit au plus grand, avec la plus grande rapidité et efficacité. Cela signifie que les utilisateurs peuvent partager le travail directement entre leurs référentiels personnels et que les groupes peuvent coordonner leur flux de travail via un référentiel central. Il permet simplement à deux développeurs assis à deux endroits différents d'effectuer et d'enregistrer des modifications indépendamment, le tout sans référentiel central..
La fusion est une pratique courante chez Git pour intégrer les changements d’une branche à l’autre. Git merge est une commande qui valide les modifications dans un autre emplacement. Il permet aux développeurs de reprendre leurs lignes de code indépendantes créées par la branche Git et de les intégrer dans une seule branche. Cela ne change que la branche cible tant qu'il reste l'historique de la branche source. Git rebase est encore une autre commande utilisée essentiellement dans le même but, sauf qu'elle le fait très différemment. Ils font tous les deux la même chose - incorporent des commits d'une branche à une autre - mais la différence réside dans la façon dont ils le font. Nous soulignons quelques points clés distinctifs comparant les deux.
La fusion de comptes est une commande qui unifie deux ou plusieurs branches de l'historique de validation. Une fusion ne regroupe souvent que deux branches, bien que Git prenne en charge la fusion de trois, quatre ou plusieurs branches en même temps. Git pull utilise Git Pull pour intégrer les modifications d'une branche à une autre ou à partir d'un autre référentiel. La fusion doit avoir lieu dans un même référentiel, ce qui signifie que toutes les branches devant être fusionnées doivent être présentes dans le même référentiel. Les situations de fusion résultent généralement de deux utilisateurs ou plus, essayant de mettre à jour le code commun. Le plus souvent, un utilisateur fusionne une branche avec une autre branche de son référentiel local dans un environnement local. Git merge intègre spécifiquement le contenu d'une branche source à une branche cible. La branche cible est modifiée, alors que la branche source reste.
Git Rebase est une autre alternative à la fusion utilisée pour intégrer une autre branche à la branche sur laquelle vous travaillez actuellement, à l'exception du fait qu'elle conserve un historique de validation linéaire. Le but de Git ReBase est de déplacer une branche d'un endroit à un autre. Les commits étant immuables, ils ne peuvent pas être déplacés. Cela implique donc de faire de nouveaux commits avec les mêmes ensembles de modifications et métadonnées. Une réorganisation modifie fondamentalement la notion de quand et où une séquence de commits a été développée, ce qui entraîne la perte de certains aspects de l'historique du développement. Cela signifie que le commit original sur lequel le développement était basé à l'origine sera modifié. Il intègre efficacement tous les nouveaux commits dans la branche principale en réécrivant l'historique. En conséquence, il crée de nouveaux commits pour chaque validation dans la branche d'origine..
- Bien que fusionner et rebaser soient les moyens les plus courants d’intégrer les changements dans Git et qu’ils servent le même objectif - combiner plusieurs branches en une seule - la différence réside dans la façon dont ils l’atteignent. Git Merge intègre le contenu d'une branche source à une branche cible, tout en préservant l'ascendance de chaque historique de validation, tandis que Git rebase incorpore tous les nouveaux commits de la branche principale en réécrivant l'historique en créant de nouveaux commits pour chaque validation dans la branche source..
- Avec la fusion Git, vous basculez d’abord sur la branche à fusionner, puis utilisez la commande de fusion pour sélectionner une branche à fusionner. Étant donné qu’une branche pointe vers une validation et que la validation est la granularité à laquelle vous associez les modifications, la fusion La commande fusionne au niveau de la branche ou du commit. Rebase, en revanche, est un peu différent. Tout d’abord, vous sélectionnez une branche à rebaser, puis vous utilisez la commande rebase pour choisir où la placer..
- La fusion crée un nouveau commit qui représente la fusion entre deux branches. Il intègre les modifications de différentes lignes de développement parallèles (branches) ensemble en créant un commit de fusion. Le but est de joindre deux ou plusieurs branches ensemble, y compris tous les changements depuis le point de divergence dans la branche actuelle. L'avance rapide est le comportement de fusion par défaut dans Git. La redistribution, en revanche, modifie les validations individuelles en réécrivant l'historique du projet en créant de nouvelles validations pour chaque validation dans la branche d'origine, ce qui génère un historique linéaire sans branches divergentes..
- La fusion de git ne change pas l'historique, tout en préservant le contexte de la branche, ce qui signifie que les branches existantes ne sont en aucun cas modifiées. Il crée un nouveau commit (sauf s'il s'agissait d'une fusion à avance rapide), mais les commits restent accessibles depuis la branche. Git Rebase, en revanche, rationalise une histoire potentiellement complexe. Les validations sont réécrites, les anciennes versions sont oubliées et le DAG des révisions est modifié. Les commits ne sont plus accessibles avec rebase, ce qui signifie que vous ne pouvez plus rebaser les branches publiées..
Eh bien, en un mot, fusionner et rebaser sont les deux manières d’intégrer les changements dans Git, mais ils diffèrent par la façon dont ils le font. La fusion est une opération en une étape avec un emplacement pour résoudre les conflits et les commits pouvant être atteints à partir de la branche restent accessibles. Rebase, quant à lui, réapplique chaque validation individuellement en réécrivant l’historique en créant de nouveaux validations pour chaque validation dans la branche source. Ainsi, ce qui était jadis accessible n’est plus accessible. Un rebase change fondamentalement la notion de quand et où une séquence de commits a été développée.