March 9, 2019

695 mots 4 mins

Travailler en équipe sur un projet versionné

Travailler en équipe sur un projet versionné

La gestion de versions partagées ne doit pas perturber les contributeurs d'un projet. Elle doit être simple. Voici l'essentiel pour travailler, bien et facilement, en équipe, sur un projet versionné.

Pré-requis: git 1 est installé sur le poste de travail. Ne pas avoir peur de la ligne de commande 2.

Dans cette note nous prenons le point du vue d’un contributeur. Le projet est présent sur un serveur. Nous utilisons des commandes git en suivant de bonnes pratiques usuelles.

Voyons :

  • Comment récupérer un projet existant, se positionner sur une branche, créer sa branche ?
  • Comment publier un travail sur le serveur git ?
  • Comment récupérer ce qui a été publié par d’autres personnes ?
  • Quelles sont les questions (et réponses) fréquentes ?

Les bonnes pratiques usuelles sont abordées dans chaque point.

Bonne lecture, bons essais

Récupérer un projet

cd ~/prg
git clone https://github.com/apple/swift.git

La première ligne nous positionne dans un répertoire de travail. La deuxième récupère le projet ‘swift’ d’Apple qui est hébergé sur le serveur ‘github’. Cette commande git créé un répertoire projet. Il contient tous les fichiers du projet.

Se positionner dans une branche nommée ‘develop’

Traditionnellement c’est le nom donné à une branche dite de développement, recevant les travaux de plusieurs personnes. Dans le répertoire d’un projet, entrer ceci :

git checkout develop

Souvent l’organisation des branches dépend des échéances du projet et de la nature des travaux. Dans tous les cas, après s’être positionné sur la bonne branche projet, ‘develop’ dans notre cas, chacun devra créer sa branche de travail.

Créer sa branche ‘mon_travail’

Usuellement chaque développeur créé une branche dans laquelle il réalise son développement.

git branch mon_travail
git checkout mon_travail

La première commande créée une branche ‘mon_travail’. La deuxième commande positionne l’environnement de travail dans cette branche. Toutes nos modifications feront partie de cette branche.

Publier son travail sur le serveur

git add .
git commit -m "ce que font mes modifications"
git push --set-upstream origin mon_dev

La première commande met l’ensemble des changements effectués en l’état “ajouté” pour git. La deuxième déclare l’ensemble des modifications, appelé ‘commit’ en terminologie git, avec un commentaire, obligatoire. La troisième envoie l’ensemble au serveur git.

Pour mettre à jour la branche ‘develop’

Usuellement plusieurs personnes publient leurs branches de travail et un responsable projet les intègre dans la branche ‘develop’. Avant de commencer un nouveau travail, il faut d’abord être à jour.

git fetch -p origin
git pull

La première commande récupère les branches publiées sur le serveur. La deuxième récupère en local les modifications publiées sur le serveur. L’ensemble permet d’être à jour des autres publications intégrées, et de partir sur de bonnes bases.

Pour fusionner une branche

Les branches de travail constituent des demandes d’intégration (le terme anglais ‘pull request’ est utilisé). Certaines plate-formes, dont GitHub et GitLab, gèrent ces demandes (sous forme de tickets). Usuellement un responsable de branche intègre des demandes de développeurs, il effectue une fusion. Le plus souvent, il s’agit de fusionner une branche de type “un_travail” dans une branche commune de développement, traditionnellement nommée “develop”. En étant positionné sur la branche ‘develop’ on entre la commande :

git merge un_travail

Git créé un ensemble de modifications, comme si le demandeur avait modifié les fichiers pour y intégrer son code. Une fois chaque fichier traité, le responsable valide son travail de fusion :

git add .
git commit -m "fusion de mon_dev dans develop"
git push

Les commandes sont les mêmes que pour la publication d’un travail de développement.

Questions fréquentes

Comment afficher la liste des fichiers différents entre ma branche et la branche ‘develop’ ?

git diff --name-status develop

Comment annuler les modifications de ‘mon_fichier’ et revenir la version initiales ?

git retore mon_fichier

Comment lister toutes le branches, y compris celles distantes ?

git branch -a

Qui a modifié ce fichier ?

git blame <file>

Comment effacer une branche “mon_travail” distante

git push --delete origin mon_travail

Comment annuler le dernier ‘commit’

git reset --soft HEAD~1

Comment créer un tag

git tag -a v0.0.2 -m "une étape importante"
git show v0.0.2
git push origin v0.0.2

Comment lister les tags

git tag

  1. Le site officiel : git ↩︎

  2. L’article wikipedia : Interpréteur de commandes ↩︎