Bienvenue dans notre guide ultime pour les commandes git merge
Et git rebase
. Ce tutoriel vous apprendra tout ce que vous devez savoir sur la combinaison de plusieurs branches avec Git.
git Merge
la commandegit merge
fusionnera toutes les modifications apportées à la base de code sur une branche distincte à votre branche actuelle en tant que nouveau commit.,
la syntaxe de la commande est la suivante:
git merge BRANCH-NAME
par exemple, si vous travaillez actuellement dans une branche nommée dev
et souhaitez fusionner toutes les nouvelles modifications apportées dans une branche nommée new-features
, vous devez lancer la commande suivante:
git merge new-features
remarque: s’il y a des modifications non validées sur votre branche actuelle, Git ne vous permettra pas de fusionner tant que toutes les modifications de votre branche actuelle n’auront pas été validées., Pour gérer ces changements, vous pouvez soit:
Créer une nouvelle branche et valider les modifications
git checkout -b new-branch-namegit add .git commit -m "<your commit message>"
les Ranger
git stash # add them to the stashgit merge new-features # do your mergegit stash pop # get the changes back into your working tree
Abandonner toutes les modifications
git reset --hard # removes all pending changes
Git Rebase
La relocalisation d’une branche Git est un moyen de déplacer la totalité d’une branche à l’autre point de l’arbre. L’exemple le plus simple consiste à déplacer une branche plus haut dans l’arbre., Disons que nous avons une branche qui s’écartent de la branche master au point Un:
/o-----o---o--o-----o--------- branch--o-o--A--o---o---o---o----o--o-o-o--- master
Lorsque vous rebase vous pouvez le déplacer comme ceci:
/o-----o---o--o-----o------ branch--o-o--A--o---o---o---o----o--o-o-o master
Pour cela, assurez-vous d’avoir tous les commits que vous voulez dans le rebase dans votre branche master. Vérifiez la branche que vous souhaitez rebaser et tapez git rebase master
(où master est la branche sur laquelle vous souhaitez rebaser)., que par exemple une branche qui était basée sur une autre branche (appelons-la fonctionnalité) est rebasée sur master:
/---o-o branch /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master
Après git rebase master branch
ou git rebase master
lorsque vous avez extrait la branche, vous obtiendrez:
/---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master \---o-o branch
git rebase interactive dans la console
pour utiliser git rebase
dans la console avec une liste de commits, vous pouvez choisir, modifier ou déposer le rebase:
- entrez
git rebase -i HEAD~5
avec le dernier nombre étant un nombre quelconque de commits plus récent en arrière que vous souhaitez examiner., - Dans vim, appuyez sur la touche
esc
, puisi
pour commencer le montage de l’essai. - Sur le côté gauche, vous pouvez remplacer la balise
pick
avec l’une des commandes ci-dessous. Si vous voulez écraser un commit dans un précédent et ignorer le message de commit, entrezf
à la place dupick
du commit. - Enregistrez et quittez votre éditeur de texte.
- lorsque rebase est arrêté, effectuez les ajustements nécessaires, puis utilisez
git rebase --continue
jusqu’à ce que rebase réussisse., - s’il rebase avec succès, vous devez forcer la poussée de vos modifications avec
git push -f
pour ajouter la version rebasée à votre référentiel distant. - S’il y a un conflit de fusion, il existe un certain nombre de façons de résoudre ce problème, y compris en suivant les suggestions de ce guide. Une façon est d’ouvrir les fichiers dans un éditeur de texte et de supprimer les parties du code que vous ne souhaitez pas. Ensuite, utilisez
git add <file name>
suivi degit rebase --continue
., Vous pouvez ignorer le commit en conflit en entrantgit rebase --skip
, arrêter le rebasage en exécutantgit rebase --abort
dans votre console.
conflits de fusion
Un conflit de fusion est lorsque vous effectuez des validations sur des branches distinctes qui modifient la même ligne de manière conflictuelle.,quelle version du fichier conserver dans un message d’erreur similaire à ce qui suit:
CONFLICT (content): Merge conflict in resumé.txt Automatic merge failed; fix conflicts and then commit the result.
Si vous regardez le fichier resumé.txt
dans votre éditeur de code, vous pouvez voir où le conflit a eu lieu:
<<<<<<< HEADAddress: 808 South Street=======Address: 505 North Street>>>>>>> updated_address
Git a ajouté si vous avez besoin d’une interface utilisateur, vous pouvez utiliser cette interface pour créer une interface utilisateur, puis utiliser une interface utilisateur pour créer une interface utilisateur. »691e596697″> Et git rebase
sont des commandes très utiles, et l’une n’est pas meilleure que l’autre., Cependant, il existe des différences très importantes entre les deux commandes que vous et votre équipe devriez prendre en considération.
chaque fois quegit merge
est exécuté, un commit de fusion supplémentaire est créé. Chaque fois que vous travaillez dans votre référentiel local, un trop grand nombre de commits de fusion peut rendre l’historique des commits confus. Une façon d’éviter le commit de fusion consiste à utiliser git rebase
à la place.
git rebase
est une fonctionnalité très puissante. Cela étant dit, c’est risqué aussi s’il n’est pas utilisé de la bonne manière., git rebase
modifie l’historique des commits, alors utilisez-le avec précaution. Si le rebasage est effectué dans le référentiel distant, il peut créer de nombreux problèmes lorsque d’autres développeurs tentent d’extraire les dernières modifications de code du référentiel distant. N’oubliez pas d’exécuter uniquement git rebase
dans un référentiel local.
C’est tout ce que vous devez savoir pour fusionner et rebaser avec le meilleur d’entre eux.