Git¶
Git est un outil qui vous protège de vous-même. Il permet en quelque sorte de faire des « checkpoints » ou en français, des points de sauvegarde , dans un projet.
Ainsi, vous pouvez modifier votre projet l'esprit tranquille, puisqu'il vous permet de revenir en arrière en cas de besoin.
Répertoire ¶
Un répertoire (« repository » ou « repo » en anglais) est le nom donné au dossier surveillé par Git. À chaque commit
, tous les changements effectués à l'intérieur de celui-ci seront enregistrés par Git.
.git
Lorsqu'un dossier est surveillé par Git, un dossier caché nommé .git
s'ajoutera à la racine. Il contient les données données de version, de branches et de configuration Git.
Commit¶
À tout moment, il est possible de sauvegarder en local (sur son ordinateur) l'avancement d'un projet avec Git.
On doit dabord choisir quels fichiers ou changements on souhaite sauvegarder. Cette étape est appelée staging
ou stage
. Ensuite, on peut faire une sauvegarde acccompagnée d'un petit commentaire1. Cette étape est appelée commit
.
Ligne de commande
Connaître la liste des fichiés ajoutés, modifiés ou supprimés : git status
Ajouter des fichiers au commit : git add NOM_DU_FICHIER
Pour ajouter tous les fichiers créés et modifiés : git add -A
Enregistrer un nouveau commit : git commit -m "Votre note ici"
Push¶
Idéalement, un commit est ensuite poussé vers un service infonuagique comme GitHub par exemple.
C'est ce qu'on appel faire un push
.
Ligne de commande
Envoyer le commit au serveur distant : git push
Branches¶
Par défaut, tous les répertoires ont une branche principale appelée main
. Lorsqu'un push
est effectué, les changements sont envoyés vers cette branche.
Travailler sur des branches séparées permet de développer de nouvelles fonctionnalités ou corriger des bugs sans affecter la branche principale (main
). Cela aide à maintenir un projet stable.
Dans l'image ci-dessous, chaque couleur représente une branch
différente et chaque cercle représente un commit
.
Ligne de commande
Voir la liste des branches : git branch
Créer une branche : git branch NOM_DE_LA_BRANCHE
Se déplacer sur une nouvelle branche : git checkout NOM_DE_LA_BRANCHE
Merge¶
Une fois vos modifications terminées sur une branche, utilisez git merge [branche] pour fusionner ces changements dans une autre branche, comme main.
Ligne de commande
Intégrer une branche à la branch courante : git merge NOM_DE_LA_BRANCHE
Collaboration¶
Git permet de travailler simultanément sur un même projet.
Admettons qu'une équipe doivent développer le même projet sur GitHub.
Chaque développeur va faire une copie du projet sur son ordinateur. On appelle cette étape, faire un clone
.
Lorqu'un membre de l'équipe effectue un push
, les autres développeurs doivent se synchroniser manuellement.
Ils doivent donc effectuer un pull
avant de faire un push
à leur tour.
Ligne de commande
Télécharge (clone) un projet distant : git clone URL
Conflits¶
Qui dit collaboration, dit conflits potentiels.
Les conflits surviennent lorsque deux développeurs modifient le même fichier.
Git combine automatiquement les modifications si elles sont sur des lignes différentes.
Si les mêmes lignes sont modifiées, un conflit est créé.
Exemple de conflit | |
---|---|
48 49 50 51 52 |
|
Petit truc
Pour minimiser les conflits, effectuez des commit
+ push
régulièrement, au minimum une fois par jour!
Résolution de conflit¶
Choisissez le code pertinent, supprimez l’autre ainsi que les marqueurs.
Exemple de conflit résolu | |
---|---|
49 |
|
Attention
Lorsqu'on résout un conflit, nécessairement, on supprime le code de quelqu'un. Afin d'éviter des conflits, cette fois, de l'ordre interpersonnels, communiquez avec l'auteur du code supprimé pour l'informer de votre décision. Il est toujours préférable de maintenir une attitude respectueuse et professionnelle .
.gitignore¶
Git permet d’ignorer certains fichiers ou dossiers en utilisant un fichier nommé .gitignore
.
Ignorer un fichier¶
Pour ignorer un fichier spécifique, ajoutez simplement son nom dans le fichier .gitignore
.
Par exemple, pour ignorer notes_perso.txt
, ajoutez :
notes_perso.txt
On peut aussi utiliser un « wildcard » (*
) si on ne connais pas le nom du ou des fichiers à exclure.
# Git ignorera tous les fichiers avec l'extension .txt
*.txt
Ignorer un dossier¶
Pour ignorer un dossier, ajoutez son nom suivi de /
.
node_modules/
Exercices¶
Exercice - Git
Cloner un projet GitHub en ligne de commande
Exercice - Git
Git en ligne de commande
-
Comment rédiger un bon commit (en anglais) ↩