On peut travailler sur plusieurs branches en parallèle. Par défaut l'unique branche est “master”.
Le plus simple :
git branch #list existing branches and point the current one git branch A #create a new branch
Changer de branche (le contenu du dossier local sera celui de la branche) :
git checkout A #work on branch A
Créer une nouvelle branche issue de l'actuelle et travailler directement dessus
git checkout -b hotfix
Fusionner le contenu d'une branche (ici, hotfix) dans la branche courante (ici, master) :
git checkout master git merge hotfix
Il ne reste plus qu'à supprimer la branche devenue inutile :
git branch -d hotfix
Effectuer un merge à blanc :
git merge --no-commit --no-ff <branch-name>
Retour arrière :
git merge --abort
Si on fusionne avec une branche qui avait juste quelques commits de plus, il se passe juste un “fast-forward”, sans risque. Par contre si chacune des 2 branches divergent (ont eu des commits différents), la fusion est un peu plus complexe, et peut révéler des confilts.
Si, lors d'une fusion, un conflit apparait, les fichiers concernés comporteront un ou plusieurs passages de la forme :
<<<<<<< HEAD:fichier.txt Version 1 ======= Version 2 >>>>>>> prob53:fichier.txt
En ce cas, la version du haut est celle de HEAD, donc de la branche actuellement extraite, et celle du bas vient de la branche qu'on tente de fusionner dans la branche courante.
Modifier le fichier pour faire la fusion “manuellement”, puis lancer git add pour résoudre le conflit.
Autre solution : git mergetool
Diverses commandes utiles
#list existing branches with last action in each git branch -v #list branches that were already merge with the current branch git branch --merged #list branches that have unmerged work compared to current branch git branch --no-merged #create local branch from existing remote branch git checkout -b C remoteName/C #delete branch on remote repository git push remoteName :C #same syntax as pushing the local branch to the remote git push remoteName C:C