Manuel:git

utilisation de git dans les cas simples

=Avant propos=

Ce document est une introduction a git qui permet d'en comprendre certains concept de base pour être rapidement opérationnel. Il ne s'agit pas d'un manuel complet. Il peut contenir des approximations, ou des erreurs, dans tous les cas contacter l'auteur pour décider comment la corriger sans rendre l'explication plus complexe qu'elle ne l'est déja...

=Introduction=

Git est un gestionnaire de sources: Il stocke des fichiers sources, se rappelle des modifications faites a ces fichiers, et y associe des commentaires.

Git est un gestionnaire de sources décentralisé: Cela signifie simplement que l'historique entier des modifications est stocké dans son intégrité dans tous les ordinateurs qui partagent un jeu de sources.

Git permet de travailler a plusieurs sur des fichiers sources: Il intègre des mécanismes permettant la synchronisation des historiques de tous les ordinateurs partageant le jeu de sources.

=Objets dans git=

Repository: espace conceptuel de stockage des sources.

Git gère des fichiers, chacun ayant un chemin depuis la racine du repository. il ne tracke PAS des répertoires. Un dossier vide ne peut pas être ajouté dans git. Un déplacement de fichier est simplement un renommage.

Git traque les changements des fichiers. Il enregistre les différences avec les versions précédentes connues. Il fait de même pour les noms de fichiers, ce qui lui permet de traquer les renommages, déplacements, ajouts et suppressions.

Un jeu de modifications entre deux versions est un commit. c'est, en gros, un patch appliqué a un état donné des sources. Cet état est aussi obtenu a partir du patch précédent, etc...

L´état initial d'un repository est de ne contenir aucun fichier. Le premier commit est donc un patch d'ajout massif de fichiers.

A partir de la version initiale des fichiers et de la succession des commits, se développe donc un historique de modifications. Dans les cas simples, cet historique est linéaire. On a alors un arbre à une seule branche, ou tronc. git donne un nom au commit qui se trouve à l'extrémité de cette branche, HEAD. Il lui donne aussi le nom 'master' (la différence est subtile et ne nous concerne pas).

Dans certains cas, il est possible d'enregistrer deux jeux de modifications différents (commits) qui se basent sur la même version des sources, on effectue alors une "branche" a partir du "tronc", mais ce cas ne nous concernera pas initialement. Le repository contiendra donc uniquement la branche master.

=Installation des outils pour commencer=

Je donnerai dans la suite des commandes git. Eh oui, ce soft a été inventé par Linus Torvalds, donc c'est un outil avant tout ligne de commande. Sous windows, il existe des outils dotés de commandes équivalentes. Je ne les détaillerai que si elles ne sont pas évidentes.

Linux
Votre gestionnaire de paquet contient déja git sauf si vous avec une version ovni de linux et dans ce cas vous n'avez probablement pas besoin de ce guide :p Donc ouvrez votre aptitude, package manager, etc. Cherchez le paquet "git" et installez le avec ses dépendances.

Windows
Commencez par installer MSYSGIT

Installez ensuite TortoiseGIT

=Mon premier repository=

Initialisation
Comme git est distribué, nul besoin de github et autres bitbuckets pour commencer a jouer avec git. On peut le faire... directement sur son PC.

Dans un dossier vide (mkdir toto; cd toto) tapez la commande suivante:

git init (TGIT: menu contextuel->tortoiseGit->create repository here->ne pas cocher "make it bare")

On ne voit rien mais il s'est passé quelque chose: un dossier caché ".git" a été créé, qui décrit un repository vide.

Mon premier commit
Créons un nouveau fichier texte de nom quelconque (ici fichier.txt) avec un contenu quelconque, mais de taille raisonnable. Ou bien, copiez ici un fichier source.

Git n'est pas encore au courant de la présence de ce fichier.

Si nous voulons ajouter ce fichier dans git, il faut l'ajouter au prochain commit, avec la commande:

git add fichier.txt (menu contextuel TortoiseSVN->add...->sélectionner le fichier puis OK.)

Maintenant on fait un commit, avec la commande:

git commit (menu contextuel TortoiseSVN->commit...)

Pas de panique: Il faut donner un message de commit.
 * Sous windows, cela vous donne une fenêtre d'édition et la liste des fichiers qui seront inclus dans le commit.
 * Sous linux, cela ouvre probablement l'éditeur de texte NANO et cela vous montre la liste des fichiers ajoutés au commit.

Ecrivons donc un message puis validons:
 * Sous windows, on écrit dans la zone: "Ajout des fichiers initiaux" puis on clique sur commit.
 * Sous linux, on écrit "Ajout des fichiers initiaux" puis combinaison CONTROL+X puis O (ou Y) pour valider

Le commit est fait. On a ajouté une révision dans le repository, qui, rappel, est pour l'instant chez vous UNIQUEMENT.