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 | git config --global user.name "Pseudo" |
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 ;)