Utilisation de Git

Présentation de Git

Git est un SCM (Source Code Management), ou encore un VCS (Version Control System) tel que Subversion et Mercurial.

Git a été créé à l’origine par Linus Torvalds le créateur du projet du noyau Linux, et est distribué sous licence GNU GPL v2.

L’intérêt de ce type d’application est de pouvoir gérer les sources d’un projet à plusieurs, en ayant la possibilité de créer des branches et d’enregistrer les modifications une par une, ce qui permet de revenir en arrière et de suivre le développement.

Contrairement à Subversion, Git possède une architecture décentralisé, il n’y a donc pas de clients/serveur, chaque installation est identique et un client peut devenir serveur.

En pratique, on utilise un répertoire git sur lequel chacun va se synchroniser, et qui sera donc assimilé à un serveur git, il sert de base afin de créer les mirroirs chez chacun.

Ainsi en cas, de défaillance du serveur, il est toujours possible de reconstruire les données.

Git possède des commandes permettant de faciliter la gestion des branches et des tags, il est pour moi meilleur que Subversion.

Le principal avantage de Git est son algorithme de traitement des sources, en effet à chaque modification, il va non pas changer le fichier complet, mais va traiter uniquement les lignes modifiées, ce qui accélère le traitement.

La différence de vitesse au niveau du téléchargement des sources avec Git par rapport à Subversion se voit facilement.

Configurer Git

Choisir son pseudo et son email :

1
2
git config --global user.name "Pseudo"
git config --global user.email "Email"

Pour avoir de jolies couleurs :

1
git config --global color.ui true

Les commandes de bases

Pour créer un nouveau dépot dans le dossier courant :

1
git init .

Pour ajouter une remote à votre dépot :

1
git remote add origin git://host/repo.git

Pour récupérer les sources d’une branche particulière dans la branche où vous êtes :

1
git pull origin master

Si vous voulez uniquement récuperer la branche master d’un dépot, vous pouvez utiliser une seule commande au lieu du git init + remote + pull :

1
git clone git://host/repo.git

Pour ajouter des fichiers à la modification en cours :

1
git add filepath

Pour enregistrer les modifications effectuées dans le dépot :

1
git commit -m "Description"

Il est possible d’éviter d’utiliser git add, mais je le déconseille, pour les fichiers déjà présent dans le dépot avec :

1
git commit -a -m "Description"

Vous pouvez aussi rendre quelqu’un d’autre auteur de la modification (on peut choisir le pseudo et/ou l’email) :

1
git commit -a -m "Description" --author="Pseudo" --email="pseudo@domain.tld"

Pour envoyer les modifications sur le serveur :

1
git push

Si la branche n’est pas suivie, il faudra le nom complet :

1
git push origin master

Vous pouvez la suivre automatiquement avec l’option -u, utile pour les nouvelles branches :

1
git push -u origin master

Pour afficher la différence entre la dernière version enregistré et votre copie de travail :

1
git diff

La gestion des branches

Pour créer une nouvelle branche qui suivra une branche distante (ici la branche master) :

1
git branch master --track origin/master

Pour récupérer les sources de toutes les branches suivies (nécessaire si vous n’avez jamais pull ou clone avant de suivre une branche) :

1
git pull origin

Pour fusionner les sources d’une branche locale dans la branche actuelle :

1
git merge branche

Idem mais avec une branche distante :

1
git merge origin/branche

Pour voir les branches existantes en local :

1
git branch

Pour voir les branches distantes :

1
git branch -r

Pour voir les deux :

1
git branch -a

Pour créer une nouvelle branche à partir de la branche actuelle et aller dedans :

1
git checkout -b branche

Pour changer de branche :

1
git checkout branche

Pour renommer une branche :

1
git branch -M oldbranch newbranch

Pour supprimer une branche locale :

1
git branch -D branche

Pour supprimer une branche distante :

1
git push origin :mabranche

Aller plus loin
D’autres fonctionnalités sont disponibles, n’hésitez pas à utiliser git help pour les lister.

Renseignez vous notamment sur git reset.

Une autre fonctionnalité de git est la gestion des tags, cela permet de figer un développement, ce sont des points précis au cours du développement d’une application. C’est utilisé notamment pour les releases ;)