Découverte de Git
Aujourd'hui je vais vous présenter Git, et les commandes de bases pour la création de dépôt, les commits en local et quelques commandes de bases. Je n'irai pas plus loin, car plutôt que de faire une très longue pages qui serait fatigante à lire je préfère couper cela en plusieurs parties. La prochaine sera réservé à la découverte du fonctionnement des branches, puis une autre sera réservé aux différentes interface graphique disponible pour lire les journaux des commits etc...
Git est un logiciel de gestion de versions décentralisé écrits par Linus Torvalds. Pour la petite histoire Git a été initialement écrit pour remplacer BitKeeper (( un logiciel de gestion de versions décentralisé aussi mais propriétaire )) qui avait décidé d'arrêter de fournir la version gratuite en 2005. L'arrêt aurait été à cause de Andrew Tridgell qui avait développé un logiciel open-source permettant d'afficher certaines informations qui n'était pas disponibles dans la version gratuite de BitKeeper. Git signifie connard dans l'argot en anglais. Linus aurait dit "je ne suis qu'un égocentrique, donc j'appelle tous mes projets d'après ma propre personne. D'abord Linux, puis git."
La grande force de Git est donc d'être décentralisé bien-sur ce n'est pas le seul il en existe d'autres comme, Mercurial écrit Python, Bazaar écrit en Python également et sponsorisé par Canonical, Darcs, et certainement d'autres encore. Mais Git semble être celui qui ce démarque le plus, il est déjà un petit peu plus rapide que Mercurial ou Bazaar et il est très certainement plus complet même si on utilisera généralement pas Git à plus de 5% de ces capacités.
Contrairement à Subversion Git ne travail pas avec des numéros de révisions mais avec des hash SHA1. Cela peut certainement dérouter au début mais on s'y habitue. Cela permet à Git de gérer ces objet avec des identifiant unique, il n'est pas possible d'avoir deux fichiers avec un contenu différent ayant le même hash. Tant qu'un fichier n'est pas modifié le hash reste inchangé et n'est stocké qu'une seul fois. En revanche si le fichier est modifié les deux versions sont stocké sur le disque.
Pour installer Git sur une distribution Debian ou un de ses dérivées il faudra installer le paquet git-core, git tout court correspond à un outil gitfm pour Gnu Interactive Tools File Manager. Ce qui n'a rien a voir.
sudo apt-get install git-core
Une fois Git installé nous allons pouvoir le configurer un petit peu. Lorsque je dis configurer c'est un bien grand mot, il s'agit simplement d'indiquer des information sur vous votre nom, mail qui seront indiqué dans les journaux de Git, et l'éditeur que vous préférez qui sera ouvert lors des commits pour indiquer le message.
git config --global user.name "Votre nom ou pseudo"
git config --global user.email mail@mail.com
git config --global core.editor vim
On indique Vim parce-que Vim c'est le meilleur de tous les éditeurs. Non, non je ne lance pas de troll.
Je risque très certainement d'en décevoir plus d'un, mais finalement utiliser Git n'est pas si compliqué que ça, du moins pour utilisation basique. J'aurai même envie de dire qu'il est plus naturel, dans le sens où Git va vous pousser à utiliser des branches (( C'est aussi une des force de Git la puissance des branches )). Vous pourrez par exemple créer une branche unstable qui serait les commits récent pas encore tester, puis une fois que le code aura été testé le merger dans master. Ceci n'est qu'un exemple bête je n'ai rien trouvé d'autres, mais c'est simplement pour expliquer que svn vous a fait prendre de mauvaise habitude à travailler directement sur trunk, et que contrairement à svn la gestion des branches en Git est très agréable et facile. Alors j'aurai simplement envie de dire abuser des branches.
Pour créer un dépôt Git il vous faudra vous placer dans le répertoire cible qui sera votre répertoire de travail par la suite et nous allons initialiser le dépôt.
git init
Le répertoire .git est maintenant créé vous pourrez le constater avec un ls -a. Globalement c'est comme un .svn, il va contenir des informations notamment l'historique. Le dépôt est pour le moment vide et ne contient pas encore les fichiers du projet. Il va donc falloir ajouter les fichiers au dépôt. Si votre répertoire contient déjà les fichiers vous pouvez utiliser le joker.
git add *
Si vous souhaitez simplement ajouter un fichier en particulier il vous suffit de préciser son nom.
git add essai.pl
Si vous n'avez pas encore de fichier créé un fichier d'essai. Pour vous exercer.
touch essai.pl
De la même façon qu'avec Subversion il vous est possible de connaître l'état des fichiers du dépôt.
git status
Maintenant que le fichier a été ajouté on peut faire un premier commit.
git commit -m "Ceci est mon premier commit avec Git, c'est trop génial."
Nous allons maintenant nous amuser à modifier un peu le fichier.
echo "Un essai de modification. Juste histoire de s'amuser un peu pour découvrir Git." >> essai.pl
Si vous faite de nouveau un git status vous verrez que votre fichier a été modifié, mais qu'il n'a pas été mis à jour. Dans le fonctionnement cela signifie que Git ne considère pas les modifications d'un fichier comme un fichier à commiter ce qui n'est pas plus mal finalement, même si cela peut surprendre la première fois. Il va donc nous falloir ajouter le fichier dans le cache prêt à être commiter.
git add essai.pl
On peut visualiser ce qui sur le point d'être commité.
git diff --cached
Vous pouvez maintenant commiter votre fichier.
git commit
Si vous souhaitez commiter tous les fichiers qui ont été modifié vous pouvez vous passer de l'étape d'ajout de fichier.
git commit -a
L'option pour all.
En conclusion pour le moment nous avons pu constater que git n'est pas si difficile que cela de prise en main dans une utilisation basique qui est suffisante pour débuter un projet, et avoir une historique des modifications. Nous avons aussi constaté que Git offrer des avantages certains à Subversion, il est très rapide de créer un dépôt, il est tellement rapide et facile de créer un dépôt que vous allez prendre l'habitude de créer des dépôts pour tout et n'importe quoi même pour des petits scripts, fichier de conf, rapport LaTeX etc... Ce qui est une très bonne habitude. Vous ne dépendait pas d'un serveur, vous n'avez donc pas besoin de réseau pour commiter il vous sera donc possible de commiter depuis n'importe où, avion, train, fin fond de la montagne, ou je ne sais où encore. Git va clairement changer votre façon de travailler, vous allez être moins retissant à l'idée de créer un dépôt, vous allez faire des commits beaucoup plus régulièrement, vous aller être plus organiser et travailler avec des branches et pleins de bonne chose encore je pense. Git fut pour moi une révélation, et en un mot je dirai que Git est génial. Alors n'hésiter pas à l'adopter pour vous faire votre propre idée. Dans un prochain article nous verrons les push sur un dépôt, et la création des branches.
Comme je sais que je ne suis pas forcément un des meilleurs pédagogue, que je n'exprime forcément très bien les idées de Git, et que je ne suis pas parfait tout simplement. Je vais vous faire partager une liste d'article que j'ai trouvé sur la toile. Bien-oui, car il y a de nombreuses personnes déjà qui ont parlé de Git en français.
Git sur wikipedia
Découvrir Git
Une comparaison de Git vs SVN
Une autre manière d'utiliser Git
Utiliser Git avec Github
Un tutorial Git
Un autre tutorial
Un dernier pour la route