Un système de gestion de version décentralisé !
Créé en 2005 par Linus Torvalds
Logiciel libre et distribué sous licence GPL 3
Travailler à plusieurs sur le même code !
Historiser le code (pouvoir retrouver toutes les modifications du code)
Un dépôt principal permet de centraliser l'information
Des clones de ce dépôt sont créés sur les machines des développeurs
On envoie régulièrement les modifications locales sur le dépôt
Git gère les conflits sur les modifications du code
Le dépôt est en local, on utilise le chemin du dépôt :
git clone /path/to/repository
Le dépôt est distant, on utilise un protocole et parfois un utilisateur :
git clone <protocol>://<username>@<url>/path/to/repository
Maintenant, on peut transformer le dossier en dépôt avec la commande git init
On crée un dossier avec la commande mkdir, et on se déplace dedans avec la commande cd.
Après avoir modifié des fichiers, vous devez les ajouter à l'aide de la commande git add
Vous pouvez ajouter un fichier particulier, par exemple git add /path/to/my/file
Ou ajouter tous les fichiers, par exemple git add * ou git add all
Une fois les fichiers modifiés ajoutés, il faut enregistrer cette version du code.
Chaque version doit être accompagnée d'un message indiquant les modifications apportées.
Pour cela on utilise la commande suivante :
git commit -m "Le message"
Après avoir enregistré des modifications, il faut les rendre accessibles aux autres développeurs
Pour cela, on envoie le code (nommé par défaut "master") sur le dépôt central (nommé par défaut "origin").
On utilise donc la commande suivante :
git push origin master
Avant d'envoyer vos propres modifications, vous devrez récupérer celles des autres développeurs
Pour cela, on utilise la commande suivante :
git pull
Lorsque deux développeurs modifient le même fichier en même temps, ces modifications rentrent en conflit.
Si certains conflits sont réglés automatiquement, d'autres doivent l'être manuellement.
Pour cela, on modifie les fichiers en conflit pour garder uniquement les modifications qui nous intéressent. Une fois ceci fait, on ajoute les fichiers et on commit !
<?php
<<<<<<< HEAD
echo "tata";
=======
echo "titi";
>>>>>>> 05ad020ca4d641797f42cb107967662c4d9e7e1f
?>
Ici, on gardera la première et la dernière ligne, ainsi que :
La troisième si on veux afficher "tata", la cinquième si on veux afficher "titi".
Il arrive que vous deviez développer de grosses fonctionnalités tout en maintenant le reste du code en parallèle.
De même, vous pouvez vouloir maintenir une version expérimentale et une version stable.
Par défaut, git utilise la branche "master".
Pour créer une nouvelle branche, on utilise la commande suivante :
git checkout -b nom_de_la_branche
Pour supprimer une branche, on utilise la commande suivante :
git branch -d nom_de_la_branche
L'intérêt des branches est notamment de permettre de passer rapidement d'une branche à une autre.
Ce changement de branche vous permet de facilement gérer deux versions de code différentes.
Pour changer de branche, on utilise la commande suivante :
git checkout nom_de_la_branche
Une fois le code de votre branche satisfaisant, vous pouvez soit le poussez vers le dépôt central, soit fusionner votre branche avec une autre.
Pour poussez le code on utilise git push origin nom_branche
Pour fusionner la branche, on se rend dans la branche qui recevra la fusion et on utilise la commande :
git merge branche_cible
Parfois, on ne sait plus bien ce que l'on à modifié, si on a tout push, etc.
Pour ça, il existe une commande super, git status, qui vous donnera la situation actuelle !
Et si vous voulez voir la liste des commits, vous pouvez utiliser la commande git log !
On peux demander à Git de ne pas ajouter des fichiers/dossiers dans un dépôt. Cela est notamment utile pour les dossiers de cache.
On utilise un fichier nommé .gitignore contenant le chemin des dossiers ou répertoires à ignorer.
Il est également possible de simuler le fait qu'un fichier ne subisse pas de changement, à l'aide de la commande :
git update-index --assume-unchanged /path/to/file
Il arrive que l'on ai besoin de récupérer des modifications du dépôt principal, sans avoir fini nos propres modifications.
Pour cela, on peut utiliser la commande git stash.
Une branche temporaire sera créée avec vos modifications. Vous pouvez ensuite récupérer vos modifications avec la commande git stash apply.
Guide rapide et simple sur Git (ayant largement inspiré cette présentation) - fr :
http://rogerdudler.github.io/git-guide/index.fr.html
Guide compréhensible plus poussé - en :
https://www.atlassian.com/git/tutorials/setting-up-a-repository
Parfois, Sam & Max parlent de Git. c'est poussé, mais c'est toujours super cool ! - fr :
http://sametmax.com/tag/git/