Mise à jour de la branche depuis le master dans Git
-
Mettre à jour la branche principale à l’aide de la commande
merge
dans Git -
Mettre à jour la branche principale à l’aide de la commande
rebase
En travaillant dans Git avec de nombreux développeurs et analystes travaillant simultanément sur les différentes branches, nous avons pu rencontrer de nombreux problèmes. Un problème courant survient lorsqu’un membre de l’équipe apporte des modifications dans sa branche locale, tandis que d’autres travaillent sur cette branche distante, puis combinent leurs modifications dans la branche principale distante.
De plus, si nous poussons la branche locale de travail et ne récupérons pas la branche principale distante, nous devons réécrire les modifications des autres développeurs dans la branche principale distante.
Cet article porte sur les commandes git update master branch
et nous aborderons le modèle complet de branchement de la mise à jour de Git. La fonctionnalité branchement
se trouve dans la plupart des systèmes de contrôle de version modernes et uniques.
Dans Git, la fonctionnalité la plus importante et la plus utilisable est la création de branches, qui fait partie de notre processus de développement quotidien. Cet article nous guidera sur la mise à jour d’une branche Git en utilisant les méthodes mentionnées ci-dessous.
Si nous voulons que notre branche de fonctionnalité git soit mise à jour avec les nouvelles modifications de la branche principale, nous devons suivre l’une des techniques suivantes :
- Fusionner
- Rebase
La fusion crée plus d’engagement tandis que le changement de base réécrit l’historique dans le référentiel.
Supposons que nous soyons sur n’importe quelle branche de fonctionnalité du référentiel que nous avons créée pour ajouter la sous-fonctionnalité dans notre processus de développement.
L’état actuel de la branche suit.
git branch
* feature branch
Et il y a de nouveaux commits disponibles sur la branche origin/master du dépôt :
git fetch
From git repository
xyz88874..def74125 master -> origin/master
Alors, comment fusionnerions-nous le commit ci-dessus de la branche locale à la branche principale ? Nous avons maintenant deux solutions, la première utilise les commandes merge
et l’autre est les commandes rebase
dans Git.
Mettre à jour la branche principale à l’aide de la commande merge
dans Git
Comme nous avons la situation où nous voulons fusionner le dernier commit de la branche locale vers la branche principale, nous pouvons utiliser la commande ci-dessous pour fusionner les commits.
git merge origin/master
Lorsque nous allons valider les modifications de la branche locale vers la branche distante, et si nous y trouvons des conflits, nous allons d’abord fusionner les conflits dans un seul fichier et créer un nouveau commit de fusion pour celui-ci. Si nous ne trouvons pas de conflit dans le répertoire de travail, un nouveau commit sera poussé directement vers une branche distante.
Mettre à jour la branche principale à l’aide de la commande rebase
Comme nous avons la situation où nous voulons rebaser le dernier commit de la branche locale vers la branche principale, nous pouvons utiliser la commande ci-dessous pour rebaser les commits.
git rebase origin/master
Rebase décale vers le haut tous les commits divergents de la branche de fonctionnalité. Cela indique que les commits divergents seront désormais constitués de \new commit hashes\
car son historique sera réécrit dans la branche master.
De plus, si notre branche de fonctionnalité est déjà poussée vers la branche maître distante, nous devons forcer la poussée pour la mettre à jour :
git push origin feature --force
Cependant, si d’autres développeurs ont extrait cette branche de fonctionnalité, cette méthode n’est pas recommandée, mieux vaut s’en tenir à la commande merge pour ce scénario.
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