<aside> 📘 Permet de stocker un ensemble de fichiers en conservant l’historique des modifications.
</aside>
<aside> 🔣 Liste des modifications, auteur, date, message associé à chaque modification, …
</aside>
<aside> 👌 Conservation de l’histoire d’un projet ; Gestion des conflits (Développement à plusieurs, Développement sur plusieurs machines/systèmes) ; Obtention aisée de la dernière version ; Récupération d’une version précédente ; Étiquetage des versions ; Gestion de branches : stable, devel, experimental, etc.
</aside>
Classification par mode de fonctionnement
| Local | Centralisé | Décentralisé |
|---|---|---|
| Dépôt local au projet | Dépôt sur un serveur central, accessible par le réseau | Pas nécessairement de serveur central (→ git) |
<aside> <img src="/icons/plus_blue.svg" alt="/icons/plus_blue.svg" width="40px" /> Pas dépendant d’une seule machine comme point de défaillance ; Possibilité de travailler sans être connecté au gestionnaire de version ; Participation à un projet sans nécessiter de permissions particulières ; Opérations locales, généralement sont plus rapides ; Permet le travail privé (brouillons, …) ; Permet toutefois de garder un dépôt de référence central
</aside>
<aside> <img src="/icons/remove_red.svg" alt="/icons/remove_red.svg" width="40px" /> Cloner un dépôt implique de copier tout l’historique ; Pas de système de verrou (peut poser des problèmes pour des données binaires qui ne se fusionnent pas) ; Peut être plus complexe de fusionner différents développements
</aside>
<aside> 🗨️ Développé par Linus Torvalds (avril 2005), remplacement de Bitkeeper sur la gestion du noyau Linux ; Fonctionne sous Linux, Unix, OS X, Windows ; GPL v2 ; Performant ; Communications par les protocoles GIT, HTTP, HTTPS, SSH ; Commits identifiés par une somme SHA-1 (hash)
</aside>
L'opération git clone permet de récupérer localement une copie complète d'un dépôt Git.
# URL en HTTPS
git clone <https://gitlab.iut-bm.univ-fcomte.fr/LOGIN/DEPOT.git>
# URL en SSH
git clone [email protected]:LOGIN/DEPOT.git
*git ACTION ARGUMENTS*man git clone
git help clone
Configuration minimale :
git config --global user.name "Prénom Nom"
git config --global user.email "[email protected]"
git config --global color.ui auto
git status
Affiche l'état actuel du dépôt Git, y compris les fichiers modifiés, non suivis et indexés.
git diff
Affiche les différences entre les modifications non indexées dans le répertoire de travail et la dernière validation.
git diff --word-diff
Similaire à git diff, mais elle affiche les différences mot par mot au lieu de ligne par ligne.
git add README.md
Ajoute le fichier README.md à l'index, ce qui signifie qu'il sera inclus dans le prochain commit.
git diff
Après avoir ajouté le fichier README.md à l'index, affiche les différences entre les modifications non indexées et les modifications indexées.
git diff --cached
Affiche les différences entre les modifications indexées et la dernière validation.
git commit
Crée un commit avec les modifications indexées et ouvre un éditeur de texte pour saisir un message de commit.
git add <fichier...>
Ajouter des modifications d'un ou plusieurs fichiers à la zone de préparation (staging area) en vue de les inclure dans le prochain commit.
git commit
Enregistrer les modifications actuellement présentes dans la zone de préparation (staging area) dans un nouveau commit.
git commit -a
Ajoute et commet automatiquement toutes les modifications apportées à tous les fichiers qui sont déjà sous suivi par Git, sans avoir à utiliser la commande git add pour chaque fichier modifié.
git commit -m "Message"
Similaire à git commit, mais elle vous permet de spécifier le message de commit directement en ligne de commande, sans ouvrir un éditeur de texte.
gitk
Interface graphique pour voir les commits
git show
Dernier commit
git diff v2.5 HEAD
git log v2.5..v2.6
git log v2.5.. # HEAD par défaut
git log v2.5.. Makefile
git branch stable v2.5
git show v2.5:Makefile
git grep