Introduction (très) rapide à Git

Git c'est quoi ?

Un système de gestion de version décentralisé !

Créé en 2005 par Linus Torvalds

Logiciel libre et distribué sous licence GPL 3

Git ça sert à quoi ?

Travailler à plusieurs sur le même code !

Historiser le code (pouvoir retrouver toutes les modifications du code)

Git comment ça marche ?

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

Télécharger un dépôt

Un dépôt existe déjà

On va créer un clone du dépôt

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

Le dépôt n'existe pas

On va créer un nouveau dépôt

 

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.

Sauvegarder des changements

Ajouter les fichiers modifiés

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

Enregistrer les modifications

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"

Envoyer vos changements en ligne

Pousser son code vers le dépôt principal

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

Mettre à jour son code

Récupérer les modifications du code

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

Les conflits

Gérer les conflits de code

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 !

Exemple d'un conflit

<?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".

Les branches

Quand utiliser les branches ?

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.

Pour tout cela, vous avez les branches !

Créer et supprimer une branche

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

Jonglez avec vos branches

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

Publier une 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

Quelques trucs de ninja

Savoir un peu où on en est !

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 !

Ignorer des fichiers

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

Pull sans avoir commité

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.

 

Quelques pépites sur Git

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/

Conclusion, Git c'est bon, mangez-en !