Dans le chapitre précédent, nous avons vu comment vous pouviez travailler seul dans votre dépôt local. Nous allons maintenant nous pencher sur l'aspect distribué de git et voir comment travailler de façon collaborative en communiquant avec d'autres dépôts. Nous allons voir comment publier vos modifications et recevoir les modifications des autres développeurs.
Simulons un environnement de travail distribué.
Nous allons faire travailler ensemble deux personnages, dont la réputation n'est plus à faire, Alice et Bob. Nous allons supposer que Alice et Bob vont chacun créer leur dépôt local sur leur machine avec git clone. Bien évidemment, ils vont utiliser "clone" en indiquant l'adresse du dépôt principal du projet : codice_1, codice_2, codice_3 ou codice_4.
Pour créer un dépôt HTTP(s), il faut qu'il soit lisible par un serveur web (ex : Apache).
Créons un faux dépôt distant pour nos tests.
Il serait prématuré d'expliquer ici comment créer un dépôt sur le réseau. Aussi, pour travailler, nous allons créer un faux dépôt distant en local.
Placez-vous dans un dossier qui ne risque rien (par exemple codice_5), nous allons créer le faux dépôt distant.
mkdir tests-avec-git
cd tests-avec-git
git init faux-depot-distant --bare
Simulons deux utilisateurs utilisant le dépôt distant.
Le faux dépôt distant est créé. Maintenant, Alice et Bob vont créer leur copie locale avec clone.
git clone faux-depot-distant depot-local-alice
cd depot-local-alice
git config user.email "alice@fr.wikibooks.org"
git config user.name "Alice"
cd ..
git clone faux-depot-distant depot-local-bob
cd depot-local-bob
git config user.email "bob@fr.wikibooks.org"
git config user.name "Bob"
Alice commence à travailler.
En tant qu'Alice, créons quelques modifications.
cd depot-local-alice
echo "Ceci est un test de git" > mon_nouveau_fichier.txt
git add mon_nouveau_fichier.txt
git commit -m "ajout d'un fichier"
echo "Une seconde ligne" » mon_nouveau_fichier.txt
git add mon_nouveau_fichier.txt
git commit -m "ajout d'une seconde ligne dans le fichier"
echo "Une troisième ligne" » mon_nouveau_fichier.txt
git add mon_nouveau_fichier.txt
git commit -m "ajout d'une troisième ligne dans le fichier"
Alice a maintenant quelques modifications dans son dépôt local, nous allons voir comment elle peut échanger avec Bob.
Commencer à travailler avec un dépôt distant.
Dès que vous voulez faire une opération qui concerne le dépôt distant (publication ou récupération d'informations), commencez toujours par
git fetch
Cela met à jour les informations sur les dépôts distants auxquels est rattaché votre dépôt local, si vous oubliez de le faire, vous risquez d'être faussé par le fait que l'historique des modifications que vous voyez (par exemple) n'est pas complet.
Ainsi, dès que vous voulez faire une opération qui implique le dépôt distant, souvenez-vous de toujours faire un git fetch.
Publier les modifications locales sur le dépôt distant.
Alice a fait plusieurs modifications sur "master", elle voudrait les partager avec Bob, elle doit donc publier ses derniers "commits" sur le dépôt distant.
git push origin master
Git nous indique que la branche master a été créée sur le dépôt distant.
Récupérer les modifications d'un dépôt distant.
Voyons comment Bob peut récupérer le travail d'Alice.
Git nous indique qu'une nouvelle branche a été créée sur le dépôt distant. On va essayer de la récupérer.
On a bien récupéré les modifications faites par Alice. Si vous ouvrez le fichier mon_nouveau_fichier.txt, vous retrouverez toutes les modifications d'Alice.
À notre tour, faisons une modification :
echo "Une quatrième ligne" » mon_nouveau_fichier.txt
git add mon_nouveau_fichier.txt
git commit -m "ajout d'une quatrième ligne dans le fichier"
git log
Le résultat de ce git log ne devrait pas vous surprendre. Néanmoins, cette sortie ne montre pas l'état du dépôt distant. Pour cela, nous allons utiliser l'option --decorate.
git log --decorate
Là, on voit bien que notre branche master locale (master) est en avance de un commit sur la branche master distante (origin/master). HEAD indique simplement le commit sur lequel nous nous trouvons. Cela est confirmé par git status :
git status
Publions nos modifications comme git nous le propose :
git push
On retourne chez Alice :
cd depot-local-alice
git status
La copie d'Alice semble à jour. Mais où est passé la modification de Bob ? Nous avons oublié le git fetch !
git fetch
git status
Cette fois-ci, git nous indique que nous sommes en retard de 1 commit, en effet nous n'avons pas récupéré les modifications de Bob. Voyons ce que donne git log. Cette fois-ci, nous allons utiliser l'option --all pour indiquer à git que nous voulons voir toutes les branches, c'est à dire que nous voulons voir origin/master et pas seulement master.
git log --decorate --all
On voit bien notre retard sur le commit de Bob puisque origin/master est plus haut que master. Demandons à git de récupérer les modifications distantes et de les fusionner avec notre master local.
Et ainsi de suite. Chacun peut localement faire plusieurs commits et faire régulièrement codice_6 (« pousser » en anglais) pour publier ses propres modifications et des pull (« tirer » en anglais) pour récupérer les modifications des autres.
Continuer.
Vous maîtrisez maintenant l'essentiel de git pour pouvoir travailler collaborativement sur un projet.
Évidemment, dans notre exemple, nous avons utilisé un faux dépôt distant. Dans la réalité, il faudra créer un dépôt central (régulièrement sauvegardé pour ne pas perdre le projet !) sur une machine réseau pour que tout le monde puisse faire le clone.

Goélette Cardabela/Après/Version imprimable

= Après - L'entretien =
= La goélette Cardabela =
Après la contruction
L'entretien
Après la construction d'un bateau il faut le mettre à l'eau, l'entretien commence dès cet instant !
Il faut ensuite maîtriser ce bateau, se familiariser avec tout. Même si on est déjà expert en navigation il faut trouver de nouvelles astuces pour les mouillages, limiter le roulis, hisser le double génois de 130 m²
Puis on est tentés par la pêche, il faut conserver ce poisson et le cuisiner.
Photo de couverture: Goélette Cardabela
Lien : https://commons.wikimedia.org/wiki/File:Entretien-du-liège.jpg
= Après - La navigation =
= La goélette Cardabela =
Après la contruction
La navigation
Après la construction d'un bateau il faut le mettre à l'eau, l'entretien commence dès cet instant !
Il faut ensuite maîtriser ce bateau, se familiariser avec tout. Même si on est déjà expert en navigation il faut trouver de nouvelles astuces pour les mouillages, limiter le roulis, hisser le double génois de 130 m²
Puis on est tentés par la pêche, il faut conserver ce poisson et le cuisiner.
Photo de couverture: Goélette Cardabela
Lien : https://commons.wikimedia.org/wiki/File:Entretien-du-liège.jpg
= Après - La cuisine à bord =
= La goélette Cardabela =
Après la contruction
La cuisine à bord
Après la construction d'un bateau il faut le mettre à l'eau, l'entretien commence dès cet instant !
Il faut ensuite maîtriser ce bateau, se familiariser avec tout. Même si on est déjà expert en navigation il faut trouver de nouvelles astuces pour les mouillages, limiter le roulis, hisser le double génois de 130 m²
Puis on est tentés par la pêche, il faut conserver ce poisson et le cuisiner.
Photo de couverture: Goélette Cardabela
Lien : https://commons.wikimedia.org/wiki/File:Entretien-du-liège.jpg
= Bibliographie et liens =

Goélette Cardabela/Équipement/Version imprimable