# Gérer les versions de son code avec git Ce cours est destiné aux participants à la session de renforcement des capacité technique des entrepreneurs Tech du centre Emerging Voice Center de l'ambassade des Etats-unis au Togo. Si vous avez déjà écrit du code, il vous arrive des moments où votre code travaille parfaitement et d'un moment à l'autre il ne marche plus ou carement le disc dur de votre ordinateur vous lâche. Un logiciel de gestion vous permettra de sauver le temps passer à écrire le code. ## Qu'est ce que s'est GIT Avant de parler de git je vous explique ce que s'est que versionner son code. Versionner son code revient à retracer l'historique de modification du code à travers des commits. (Donner l'exemple de la page d'acceuil de son site et de l'étudiant qui écrit son memoire.) IL existe beaucoup de logiciels de versionning (SVN, CVS), ici nous parle nous parlerons de Git qui a été développé par Linus Torvald le créateur du noyau linux en 2005 qui a gagné beaucoup de popularité chez les développeur au file du temps. Il existe le modèle de gestion de version centralisé et le modèle de gestion distribué. #### Le modèle centralisé Le modèle centralisé est un basé sur un système centrale c'est à dire un serveur central qui enregistre les différente version du code et c'est par lui qu'on passe pour tous actions. #### Le modèle distribué Un peu comme le système de gestion des téléchargements torrents le peer to peer, tout le monde a une version du code sur sa machine et peut servir de serveur pour tout le monde. Ce qui réduit le risque de perte quand le serveur central venait à disparaître ou être endommagé et accéléré les actions. Git est utilise le modèle distribué comme Mercurial un autre logiciel de gestion de versions. ## Installer git #### Windows Pour installer git sur windows aller sur ce https://gitforwindows.org/ télécharger puis installer #### Linux Sous linux télécharger le sur ce lien http://git-scm.com/downloads ou ouvrer la console et taper la commande suivante : `sudo apt install git` #### Macos Sous macos télécharger le sur ce lien http://git-scm.com/downloads ou dans la console taper la commande `brew install git` Après installation taper les commande suivante dans la console : ``` git config --global user.name "Votre nom ou pseudo" git config --global user.email "Votre@email.com" ``` Par exemple dans mon cas je ferai : ``` git config --global user.name "ameklou" git config --global user.email "ameklou@minodoo.com" ``` ## Les commandes git Git s'utilise majoritairement dans la console même s'il existe une version graphique qui est intégré à nos éditeurs `git init` Git init est la commande qui permet d'initialiser git dans le repertoire courant. Avec cette commande notre répertoire est prêt pour supporter git. `git help` Git help permet de sortir la liste des commandes disponiblent sur git. Elle nous permet de nous rappeler des commandes. `git add . ` Git add . permet d'enregistrer les fichiers du répertoire courant à l'index de notre dépôt local. `git commit -m "message"` Git commit permet d'enregistrer les modifications dans l'historique. -m " message" permet de donner une explication à la nature de la modification. `git clone` Git clone permet de récuperer un depôt distant sur sa machine en local. `git clone git@github.com:ameklou/toi.git` `git remote add nom_de_la_branche lien_de_la_branche` Git remote add permet de lier un depôt local à un depôt distant `git remote add origin git@github.com:ameklou/toi.git` `git remote –v` Git remote -v permet de répertorie les dépôts distants actuellement configurés. `git checkout nom_du_fichier` Si vous avez modifié plusieurs fichiers mais que vous n’avez pas encore envoyé le commit et que vous voulez restaurer un fichier tel qu’il était au dernier `git branch` Git branch peut être utilisée pour répertorier, créer ou supprimer des branches. `git branch –d <nom-branche>` `git pull` Git pull permet de fusionner toutes les modifications présentes sur le dépôt distant dans le répertoire de travail local. `git merge <nom-branche>` Git merge est utilisée pour fusionner une branche dans la branche active. `git diff --base <nom-fichier>` Git diff permet de lister les conflits dans un fichier. `git stash` Git stash aide à enregistrer les changements qui ne doivent pas être commit immédiatement. C’est un commit temporaire.