branches.md 5.3 KB


title: "Tutoriel git


introduction | installation | dépôt local | dépôt distant | branches | forks
" output:

toc: true


Branches

Lorsque l'on fait des commits successifs, ceux-ci sont ajoutés les uns à la suite des autres, sur une même branche. Git permet également, à partir d'un commit donné, de réaliser plusieurs branches en parallèle. Les branches peuvent ensuite être fusionnées, abandonnées ou même supprimées.

L'utilisation des branches est très naturelle avec git et permet d'organiser le déroulement du projet. Souvent, on utilise une branche principale "master" qui "doit toujours fonctionner" et, pour chaque fonctionnalité à ajouter, on dérive une nouvelle branche que l'on fusionne ensuite dans le master une fois la fonctionnalité réalisée (ou partiellement réalisée) et testée.

Afficher les branches

La commande git branch permet d'afficher les branches.

On peut avoir plus d'information avec la commande git log --graph --oneline --decorate.

Créer une nouvelle branche locale

La command git branch ... permet de créer de nouvelles branches.

Changer de branche

La commande git checkout ... permet de sélectionner une branche.

Les nouveaux commits sont alors effectués pour la branche sélectionnée.

Le master est une branche comme les autres qu'on peut également sélectionnée.

Fusionner des branches

Pour fusionner des branches, il faut d'abord sélectionner la branche qui doit recevoir les modifications puis utiliser la commande git merge.

Un nouveau commit, correspondant à la fusion est alors créé. On peut le vérifier avec un git log...

... ou avec un client graphique.

Envoyer une branche sur un dépôt distant

Lorsque l'on crée une branche, celle-ci est locale au dépôt. Pour la créer et l'envoyer également sur le serveur, il faut utiliser la commande git push --set-upstream .... Ainsi, la branche locale et la branche distante seront associées et il suffira ensuite d'un push classique de la branche locale pour l'envoyer sur le serveur.

On peut également voir sur le site gogs que la branche a bien été créée sur le serveur.

Afficher les branches distantes

La commande git ls-remote permet de lister les branches distantes.

Terminer une branche locale

Pour terminer une branche locale (c'est-à-dire supprimer l'étiquette correspondante dans le dépôt local), il faut d'abord sélectionner une autre branche...

... puis utiliser la commande git branch -d ....

Terminer une branche distante

Pour terminer une branche distante (c'est-à-dire supprimer l'étiquette correspondante sur le serveur), il faut utiliser la commande git push --delete ...

Supprimer un commit déjà pushé (DANGER !!!)

Généralement, vouloir supprimer un commit déjà envoyé sur le serveur est une mauvaise idée. En effet, en plus de perdre les données sauvegardées, cela peut casser les commits d'un collègue qui aurait déjà récupéré et continué les commits en question, donc il vaut mieux committer des corrections.

Mais si c'est vraiment ce que vous voulez faire, voici la procédure (pensez à vérifier que les commits locaux sont également supprimés sinon les commits supprimés sur le serveur seront de nouveau envoyés au prochain push).

Réécrire l'historique

Souvent, on crée des commits au fur et à mesure du travail pour fixer et partager les modifications. Mais pour certaines applications, on peut vouloir un graphe de commits "plus propre", où les commits doivent suivre une structure prédéterminée, ou au contraire les réorganiser a posteriori. Git offre des fonctionnalités pour cela : regrouper des commits, les déplacer... Ces fonctionnalités ne sont pas traitées dans ce tutoriel (voir la documentation sur les git rebase).

Résumé et méthode de travail

Résumé des commandes git précédentes :

---|---| git branch | TODO | git log --graph --all --oneline --decorate | | git ls-remote | | git branch ... | | git checkout ... | | git merge ... | | git push --set-upstream ... | | git branch -d ... | | git push --delete ... | |

Quelques conseils de méthode de travail :

  • avoir une branche master "qui marche tout le temps"
  • pour chaque tâche du projet, créez une branche dédiée, que vous fusionnerez dans le master une fois la tâche réalisée.
  • utiliser des branches ne vaccine pas contre les conflits, donc pensez à faire quand même le point avec vos collègues régulièrement.

Exercice

TODO


Retour au début de la page

Retour à la page d'accueil

Dernière mise à jour : 2016-03-05