Tuto Git
Pour commencer, c'est quoi Git ?
C'est un logiciel de versionnage de fichier Et cela permet de travailler de manière collaborative sur un dépot, ou bien de retrouver le code tel qu'il était il y a x temps, maintenir différentes versions d'un logiciel en même temps. Il peut avoir pleins d'autres utilités (faites marcher votre imagination).Le logiciel : Ligne de commandes (MultiOS).
vous pouvez le télécharger sur le site officiel c'est un outil particulièrement puissant utilisé en CLI, il est donc conseillé de le maîtriser ainsi avant de passer à des interfaces graphiques.La configuration
exemple de fichier .gitconfig (UNIX : ~/.gitconfig, Windaube : %USERPROFILE%\.gitconfig)[user] name = Purexo email = ...[at]... [core] crlf = input safecrlf = true editor = nano [color] ui = true [alias] hist = log --graph --decorate --format=format:'%C(dim red)%h%C(reset) | %C(bold green)%ad%C(reset) | %C(white)%s%C(reset) %C(bold blue)[%an]%C(reset)%C(bold magenta)%d%C(reset)' --date=shortpour ajouter des settings :
$git config --global groupe.variable valeur
Exemple :
git config --global user.nom "Purexo"
Git : Les Bases
Un dépôt git peut être local, stocké dans le répertoire de travail, avec le projet distant, stocké ailleurs que dans le répertoire de travail (généralement sur un serveur)Initialisation d'un depot
L'idéal est d'avoir un dossier vierge, donc on créé le dossier, on ce déplace à l'intérieur et on faitgit init #Initialise le dépôt git
Ajouts des fichiers au depot
git add Liste des fichiers à ajouter (séparé par des espaces)Cette commande a pour but d'indexer les modifications dans le dépôt. (le caractère joker (*) peut être utilisé) Note : add peut etre remplacer par rm pour désindexer des fichiers (les supprimerons du dépôt)
Versionnage des fichiers
git commit -m "Message du commit"Cette commande versionne les fichiers ou leurs modifications (Ajouts/Suppression/Modification), le -m permet de commenter le commit c'est obligatoire, si on ne précise pas le -m "message" git ouvrira un éditeur de texte.
Comparer les fichiers de répertoire de travail avec le dépôt :
git statusCette commande retournera si le dépôt est cohérent avec le répertoire de travail.
L'historique de Git
git logCette commande très brut permet de retourner l'historique des commits dans les dépôts, avec les modifications effectué et par qui. $ git log --pretty=oneline # affiche un commit par ligne Il est conseillé de rendre plus lisible l'affichage via les options que l'on peut lui passer, pour cela je vous propose d'utiliser l'alias du .gitconfig fournis plus haut. (ou de faire le votre en suivant la doc, bon courage ;-) )
Gestion du dépôts
Grâce à Git on peut naviguer dans la time-line du code, switcher d'une branche à l'autre, écraser un ancien commit. Git nous laisse une gestion total du WorkFlow.Retrouver une ancienne version
La commande checkout, rappel la commande log permet de récupéré les hash des différents commit qui servent d'identifiant.git checkoutPermettra de mettre à jours le répertoire de travail vers le commit précisé. Pour retourner à la dernière version :
git checkout master
Tagging de version
une version (un commit) peut être taggé pour être retrouvé plus facilement ou pour marquer une version logiciel etc... Pour cela deux possibilité :git tag "nom du tag souhaité" # tagera le commit courant git tag "Nom Tag" # tagera le commit précisé via son hashGrace à ce tag, on pourra checkout via le nom du tag plutôt que via le hash du commit.
git checkout "Tag Name"
Modification du dernier commit
Parfois on fait un commit, et on ce rend compte qu'on à oublié un petit truc. Plutôt que de faire un commit supplémentaire pour si peu, on va modifier le précédent grâce à$git --amend
Annulation de modification (avant un commit)
A cause d'une erreur de manip, ou n'importe quoi d'autre, on veut annuler des indexations non comité$git reset HEAD
Annulation d'un commit
git revert HEAD #Créera un commit pour annuler le précédent
Les branches
Les branches servent servent à développer de nouvelles fonctionnalités, debugger une version logicielle spécifique. séparer le code de plusieurs personnes pour ne pas avoir de problèmes de conflit lors de la mise a jours du dépôts distants. Après vous êtes libre de faire ce que vous en voulez ;-)Quand / Pourquoi créer une nouvelle branche
- Ma modification sera-t-elle rapide ?
- Ma modification est elle simple ?
- Modification faisable en un seul commit ?
Création et navigation entre les branches
git checkout -b newBrancheLa commende checkout sert à changer de branches, l'option -b permet de créer la branche pour switcher dessus.
La fusion de branches
git checkout newbranche # On s'assure de bien etre sur la branche que l'on souhaite fusionner vers une autre git merge master # Fusion vers la branche de destination master.
Le(s) dépôts distants
Le dépôts distant servira de référence à tout l'équipe c'est sur lui que serons rapatrié les commit à la fin pour que tout le monde puisse ce synchroniser.1) Importer le dépôt !!!
git clone URLduDepot nomDepotLocalnomDepotLocal est optionel, si il n'est pas donné, le nom de dossier local seras par défaut le nom du dépôt distant (tout en minuscule) l'URL peut être en http, https, ssh, ou un chemin relatif ou absolu si le dépôt "distant" ce trouve sur la machine
2) Synchronisation
Télécharger les mise à jours du dépôt distant
git fetch git merge origin/master # technique un peu chiante et fastidieuseou
git pull # Technique pratique
Uploader les mise à jours local vers le dépots distant
git push
3) Éviter les conflits
Pour cela, l'utilisation des branches fait sens et est préconisé sinon on peut aussi utiliser :git pull --rebase #met a jours le depot local sans réécrire sur les modif local git push