Introduction
Ce guide est une introduction simple et pratique pour commencer à travailler avec Git à partir de zéro. Ici, nous allons aller droit au but. Ce guide en 5 étapes d'un flux de travail vise à donner toutes les cartes pour la gestion de tout projet avec Git.
Commençons à utiliser Git maintenant.
1. Installation
Vérifions que Git soit installé à l'aide de la commande suivante dans le terminal:
git --version
2. Créer ou obtenir un projet (repository) existant
Pour commencer à travailler sur un projet (dépôt - repository) Git, nous avons le choix d'en créer un nouveau ou d'en utiliser un existant (à partir de GitHub par exemple).
Créer un nouveau projet
Créer un nouveau dossier, l'ouvrir et exécuter la commande
git init
pour créer le nouveau dépôt.
Cloner un projet existant
Créer une copie de notre dépôt local en exécutant la commande
git clone /path/to/repository
si nous utilisons un serveur distant, cette commande sera
git clone username@host:/path/to/repository
3. Sauvegarder nos modifications
Notre repository local est composé de trois "arbres" gérés par git.
Le premier est l'espace de travail
qui contient réellement nos fichiers.
Le second est un l'Index
qui joue un rôle d'espace de transit pour nos fichiers.
Et enfin, HEAD
qui pointe vers la dernière validation faite.
A. Commit
Nous recommandons d'utiliser une interface graphique pour gérer les commit, cela nous donne un meilleur aperçu de ce que nous voulons enregistrer.$ git gui // (git-gui)
Ajouter & Valider
Nous pouvons proposer un changement (l'ajouter à l'Index) en exécutant les commandes
git add <filename>
git add *
C'est la première étape dans un workflow git basique. Pour valider ces changements, utiliser
git commit -m "Commit message"
Les fichiers sont ainsi ajoutés au HEAD, mais pas encore dans notre dépôt distant.
B. Push
Tout d'abord, nous avons besoin d'un hôte (comme Github, Gitlab, Bitbucket ...) pour mettre notre projet en ligne. Si cela n'a pas encore été fait, créer simplement un compte sur l'une de ces plateformes.
Envoyer des changements
Nos changements sont maintenant dans le HEAD de la copie de notre
dépôt local.
Pour les envoyer à notre dépôt distant, exécuter la commande
git push origin master
Remplacer master par la branche dans laquelle nous souhaitons envoyer vos changements.
Si nous n'avons pas cloné notre dépôt
existant et voulons le connecter à notre dépôt
sur un serveur distant, nous devons l'ajouter avec
git remote add origin <server>
Maintenant, nous pouvons envoyer nos changements vers
le serveur distant sélectionné
Le flux de travail complet devient ainsi:
4. Branching
A. Branches
Le 'Branching' permet à chaque développeur de créer une nouvelle version à partir du code d'origine afin d'isoler son travail des autres. Cela aide également Git à fusionner facilement les versions plus tard.
Imaginez que vous travaillez avec vos collègues sur le même fichier. Il y a de fortes chances que quelqu'un écrase, au moins partiellement, le travail d'un autre. Nous pouvons éviter cela en créant des branches afin d'isoler notre travail de celui des autres membres de l'équipe.
En bref, une branche Git est une ligne de développement indépendante. Remarque: chaque nœud d l'image ci-dessus représente un commit.
Branches
La branche master est la branche par défaut quand nous créons un dépôt. Utiliser les autres branches pour le développement et fusionner ensuite à la branche principale quand c'est fini.
Créer une nouvelle branche nommée "feature_x" et
passer dessus pour l'utiliser
git checkout -b feature_x
retourner sur la branche principale
git checkout master
et supprimer la branche
git branch -d feature_x
une branche n'est pas disponible pour les autres
tant que nous ne l'avons pas envoyée vers le dépôt distant
git push origin <branch>
Remarque: Git est livré avec des outils GUI intégrés pour explorer les branches -
gitk .
Nous recommandons de l'utiliser afin d'avoir un bon aperçu de l'organisation.
Il suffit de le lancer dans le terminal:
gitk
B. Update & Merge
Mettre à jour & Fusionner
Pour mettre à jour notre dépôt local
vers les dernières validations, exécuter la commande
git pull
dans l'espace de travail pour
récupérer et fusionner les changements distants.
pour fusionner une autre branche avec la branche active (par exemple master), utiliser
git merge <branch>
dans les deux cas, git tente d'auto-fusionner les changements.
Malheureusement, ça n'est pas toujours possible et résulte par des conflits.
Nous devons alors résoudre ces conflits
manuellement en éditant les fichiers indiqués par git.
Ensuite, nous devons les marquer comme fusionnés avec
git add <filename>
après avoir fusionné les changements,
nous pouvons en avoir un aperçu en utilisant
git diff <source_branch> <target_branch>
Annuler des changements
Si nous voulons, au contraire, supprimer toutes les modifications et validations locales, il faut récupérer le dernier historique du serveur et y pointer notre branche principale comme ceci:
Remplacer les modifications locales
git fetch origin
git reset --hard origin/master
5. Extras
Tag & Version
Il est recommandé de créer des balises pour les versions logicielles.
Nous pouvons créer un nouveau tag nommé Hurna v1.3.0 en executant
git tag -a v1.3.0 -m "Hurna v1.3.0"
Log
Dans sa forme la plus simple, nous pouvons étudier l'historique en utilisant
git log
Nous pouvons ajouter de nombreux paramètres pour
controler notre recherche.
Pour voir uniquement les commits d'un certain auteur:
git log --author=michael-jeulinl
Pour voir un journal très compressé où chaque commit est une ligne:
git log --pretty=oneline
Pour voir un arbre ASCII de toutes les branches,
décoré avec les noms des balises et des branches:
git log --graph --oneline --decorate --all
Voir uniquement les fichiers modifiés:
git log --name-status
Ce ne sont là que quelques-uns des paramètres possibles. Pour en savoir plus, utiliser
git log --help
Magnifique! Nous maîtrisons maintenant tout ce dont nous avons besoin pour gérer un projet et ses versions. Les prochains cours portent sur la mise en pratique plus avancée.