Outils pour utilisateurs

Outils du site


command-line:git:branches

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
command-line:git:branches [le 28/03/2013 à 14:37] – créée Yoskocommand-line:git:branches [le 01/09/2016 à 12:41] (Version actuelle) – [Commandes principales] Yosko
Ligne 2: Ligne 2:
 On peut travailler sur plusieurs branches en parallèle. Par défaut l'unique branche est "master". On peut travailler sur plusieurs branches en parallèle. Par défaut l'unique branche est "master".
  
-TODO+===== Gestion basique des branches ===== 
 + 
 + 
 +===== Commandes principales ===== 
 +Le plus simple : 
 +<code bash> 
 +git branch       #list existing branches and point the current one 
 +git branch A     #create a new branch 
 +</code> 
 + 
 +Changer de branche (le contenu du dossier local sera celui de la branche) : 
 +<code bash> 
 +git checkout A   #work on branch A 
 +</code> 
 + 
 +Créer une nouvelle branche issue de l'actuelle et travailler directement dessus 
 +<code bash> 
 +git checkout -b hotfix 
 +</code> 
 + 
 +Fusionner le contenu d'une branche (ici, hotfix) dans la branche courante (ici, master) : 
 +<code bash> 
 +git checkout master 
 +git merge hotfix 
 +</code> 
 + 
 +Il ne reste plus qu'à supprimer la branche devenue inutile : 
 +<code bash> 
 +git branch -d hotfix 
 +</code> 
 + 
 +===== Test de fusion ===== 
 + 
 +Effectuer un merge à blanc : 
 +<code bash> 
 +git merge --no-commit --no-ff <branch-name> 
 +</code> 
 + 
 +Retour arrière : 
 +<code bash> 
 +git merge --abort 
 +</code> 
 +===== Précisions sur la fusion ===== 
 +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 aucun conflit, un nouveau commit est créé sur la branche de destination, rassemblant les commits spécifiques de la branche source 
 +  * Si un conflit au moins est détecté, une tentative de merge est faite en local, et c'est au développeur de corriger le conflit avant de le commiter (voir plus bas) 
 +===== Conflits ===== 
 +Si, lors d'une fusion, un conflit apparait, les fichiers concernés comporteront un ou plusieurs passages de la forme : 
 +<code> 
 +<<<<<<< HEAD:fichier.txt 
 +Version 1 
 +======= 
 +Version 2 
 +>>>>>>> prob53:fichier.txt 
 +</code> 
 +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 
 + 
 +===== En vrac ===== 
 +Diverses commandes utiles 
 +<code bash> 
 +#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/
 + 
 +#delete branch on remote repository 
 +git push remoteName :C 
 +#same syntax as pushing the local branch to the remote 
 +git push remoteName C:C 
 +</code>
command-line/git/branches.1364481457.txt.gz · Dernière modification : le 28/03/2013 à 14:37 de Yosko