Travailler en équipe sur un projet versionné
Voici l'essentiel pour travailler, bien et facilement, en équipe, sur un projet versionné. Git
est un outil incontournable en gestion de versions. Certainement le plus utilisé au monde. En quelques commandes vous pouvez participer à un projet versionné. Cette note montre comment.
Le nécessaire: 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.
remarque: il existe de multiples interfaces graphiques tiers proposant d’utiliser git
, mais l’outil est conçu pour la ligne de commande. Apprendre les commandes git
est simple et vous permet ensuite de comprendre les différentes interfaces. C’est un bon investissement.
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 ?
- Quelques 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
Pour effacer ce tag
git push --delete origin v0.0.2
git tag -d v0.0.2
La première ligne efface le tag côté serveur. La deuxième l’efface en local.
Comment lister les tags
git tag
Comment supprimer tout l’historique ? Attention, action non utilisée en tant que contributeur. Vous devez avoir les droits ‘administrateur’ sur le serveur pour ce faire.
git checkout --orphan nouveau_depart
git add -A
git commit -am "nouveau départ"
git branch -D master
git branch -m master
git push -f origin master
-
L’article wikipedia : Interpréteur de commandes ↩︎