Introduction à GIT

Je retranscrit ici un article très intéressant trouvé sur internet à propos de GIT.


Migrer de Subversion (ou CVS) vers Git ne se suffit pas en soit pour profiter de ce qui fait de Git… Git.

Git connait un succès grandissant pour de nombreuses raisons, dont :

Après quelques rappels indispensables, nous allons nous concentrer sur le système de branches et proposer un modèle « prêt à l’emploi », largement inspiré de A successul Git branch model.

Quelques rappels

Récupérer un dépôt Git (équivalent de svn checkout)

Git est un système décentralisé, c’est à dire que plusieurs dépôts peuvent co-exister.

Lorsque nous souhaitons récupérer les sources d’un dépôt pour les placer sur notre disque dur, nous allons cloner le dépôt dans son ensemble : avec l’historique de toutes les révisions, toutes les branches, tous les tags, …

Exemple de clone du dépôt du projet « hello-world »

git clone git://github.com/geraldcroes/hello-world.git
#Nous pouvons maintenant consulter, hors ligne,
# l'intégralité de l'historique et des branches du dépôt

Modfication, Ajout puis Commit

Dans un schéma SVN classique, un fichier peut avoir 3 états :

Dans un schéma GIT, un fichier dispose d’un quatrième état :

Ce nouvel état indique que le fichier a été sélectionné pour le prochain décollage (commit), ajouté à l’index, mais pour autant encore non validé.

Ce petit détail fondamental permet au développeur de se concentrer à chaque commit sur ce qu’il souhaite envoyer vers le dépôt : Terminée la sélection laborieuse de tous les fichiers à envoyer, terminé les commits successifs pour une même fonctionnalité.

Voyons en détail comment cela se passe

#modification du fichier1.php, pour fonction 1
#modification de fichier2.php, changement de couleur du titre
#création de fichier3.php, pour fonction 1
#modification de fichier4.php, pour fonction 1
 
#La fonction 1 est terminée, on veut la valider :
git add fichier1.php
git add fichier3.php
git add fichier4.php
 
#on commit la fonctionnalité 1
git commit -m "Fonction 1 terminée"
 
#on en profite pour envoyer la micro modification sur le titre
git add fichier2.php
git commit -m "Changement de couleur du titre"

Note : L’envoi des fichiers (commit) à ce stade est local => Aucun envois vers le dépôt d’origine n’est effectué. Le commit est donc une opération instantanée.

Git encourage à commiter souvent. Plus vous commiterez souvent, plus vous profiterez de la puissance de git.

Envoyer les fichiers vers le dépôt d’origine

Tant que vous ne le demandez pas, vos modifications (ajouts ou commits) ne sont pas envoyées vers le dépôt d’origine et ne sont donc visibles que par vous (raison de plus pour commiter souvent).

Pour envoyer vos modifications locales vers le dépôt d’origine, il vous faut effectuer un « push ».

git push
# les commits sont maintenant envoyés
# vers le dépôt d'origine

Récupérer les modifications effectuées par d’autres depuis le dépôt d’origine

Ici, aucune surprise, on retrouve un équivalent au « update » de Subversion : le pull.

git pull
# les modifications présentes sur le dépôt distant
# sont récupérées