|
@@ -13,8 +13,8 @@ dossier classique que l'on demande à git de versionner (journaliser).
|
|
|
|
|
|
Un dépôt git contient l'ensemble des commits (versions sauvegardées du projet).
|
|
|
Ces commits peuvent être marqués par des étiquettes. Il existe deux étiquettes
|
|
|
-prédéfinies et gérées par git : `master` (dernier commit) et `HEAD` (commit
|
|
|
-courant, correspondant à l'état courant des fichiers).
|
|
|
+prédéfinies et gérées par git : `master` (dernier commit) et `HEAD`
|
|
|
+(commit/état courant des fichiers).
|
|
|
|
|
|
## Initialiser un dépôt
|
|
|
|
|
@@ -39,12 +39,8 @@ peut rien casser. N'hésitez donc pas à la lancer pour voir où vous en êtes.
|
|
|
|
|
|
Il faut indiquer explicitement les fichiers que git doit journaliser.
|
|
|
|
|
|
-Par exemple, imaginons qu'on ouvre un nouveau fichier `rapport_01.tex` dans
|
|
|
-notre projet.
|
|
|
-
|
|
|
-![](depot_local_03.png)
|
|
|
-
|
|
|
-On y écrit du code LaTeX.
|
|
|
+Par exemple, imaginons qu'on ouvre un nouveau fichier LaTeX `rapport_01.tex`
|
|
|
+dans notre projet.
|
|
|
|
|
|
![](depot_local_04.png)
|
|
|
|
|
@@ -97,12 +93,12 @@ Vous pouvez le vérifier avec un `git status`.
|
|
|
|
|
|
![](depot_local_11.svg)
|
|
|
|
|
|
-Ainsi, un `git commit` crée un commit à partir de l'état pointé par HEAD
|
|
|
-et fait pointer master (et HEAD) sur ce nouveau commit.
|
|
|
+Ainsi, un `git commit` crée un commit à partir de l'état pointé par `HEAD`
|
|
|
+et fait pointer `master` (et `HEAD`) sur ce nouveau commit.
|
|
|
|
|
|
## Fichiers autogénérés et .gitignore
|
|
|
|
|
|
-Git est très pratique pour gérer des fichiers textes que l'on modifie
|
|
|
+Git est très utile pour gérer des fichiers textes que l'on modifie
|
|
|
régulièrement. En revanche, il n'est pas adapté pour gérer des fichiers dans un
|
|
|
format non-textuel (images, données compressées, documents word...). Si on
|
|
|
ajoute un tel fichier dans le dépôt alors à chaque modification, git stockera
|
|
@@ -110,8 +106,7 @@ une nouvelle copie complète (au lieu de stocker uniquement les lignes qui ont
|
|
|
changé), ce qui est inefficace.
|
|
|
|
|
|
D'autre part, il est inutile de versionner les fichiers autogénérés (créés
|
|
|
-automatiquement lors de la compilation du code). Par exemple, si on compile le
|
|
|
-code LaTeX de notre projet...
|
|
|
+automatiquement). Par exemple, si on compile le code LaTeX de notre projet...
|
|
|
|
|
|
![](depot_local_12.png)
|
|
|
|
|
@@ -178,26 +173,26 @@ Le "unstaged" correspond aux modifications courantes non commitées.
|
|
|
## Supprimer les modifications courantes
|
|
|
|
|
|
La commande `git checkout -- . ` supprime les modifications courantes. Le dépôt revient
|
|
|
-alors dans l'état du dernier commit (master).
|
|
|
+alors dans l'état du dernier commit (`master`).
|
|
|
|
|
|
![](depot_local_checkout_01.svg)
|
|
|
|
|
|
## Revenir à un commit précédent (sans suppression)
|
|
|
|
|
|
La commande `git checkout 7b3...` permet de revenir au commit "7b3...". On passe
|
|
|
-ainsi dans un mode "détaché" (HEAD ne pointe plus sur un commit terminal).
|
|
|
+ainsi dans un mode "détaché" (`HEAD` ne pointe plus sur un commit terminal).
|
|
|
|
|
|
![](depot_local_checkout_02.svg)
|
|
|
|
|
|
Au lieu d'utiliser le numéro de commit, on peut également utiliser les
|
|
|
-étiquettes. Par exemple, `git checkout master` pour aller au dernier commit
|
|
|
+étiquettes : par exemple `git checkout master` pour aller au dernier commit
|
|
|
principal ou `git checkout HEAD~1` pour aller au commit précédent le commit
|
|
|
courant.
|
|
|
|
|
|
## Marquer un commit
|
|
|
|
|
|
-La commande `git tag` permet de nommer des commits pour, par exemple, fixer une
|
|
|
-version ou pouvoir revenir plus facilement sur un commit particulier.
|
|
|
+La commande `git tag` permet de nommer des commits pour, par exemple, indiquer
|
|
|
+une version ou pour pouvoir revenir plus facilement à un commit particulier.
|
|
|
|
|
|
![](depot_local_22.png)
|
|
|
|
|
@@ -206,8 +201,8 @@ version ou pouvoir revenir plus facilement sur un commit particulier.
|
|
|
## Supprimer des commits précédents
|
|
|
|
|
|
La commande `git reset 073...` revient au commit "073..." et annule tous les
|
|
|
-commits suivant (jusqu'à l'ancien master). Les modifications correspondants à
|
|
|
-ces commits sont conservées dans l'état courant (non commité).
|
|
|
+commits suivant (jusqu'à l'ancien `master`). Les modifications correspondant à
|
|
|
+ces commits sont regroupées dans l'état courant, non commité.
|
|
|
|
|
|
![](depot_local_checkout_04.svg)
|
|
|
|
|
@@ -223,30 +218,30 @@ Résumé des commandes git précédentes :
|
|
|
|
|
|
---|---|
|
|
|
`git init` | initialise le dossier courant (nouveau dépôt git) |
|
|
|
-`git status` | TODO |
|
|
|
-`git add` | |
|
|
|
-`git commit -a` | |
|
|
|
-`git mv` | |
|
|
|
-`git rm` | |
|
|
|
-`git log` | |
|
|
|
-`git checkout -- .` | |
|
|
|
-`git checkout <commit/etiquette>` | |
|
|
|
-`git tag` | |
|
|
|
-`git reset` | |
|
|
|
-`git reset --hard` | |
|
|
|
+`git status` | affiche l'état courant des fichiers |
|
|
|
+`git add <fichiers>` | demande à git de versionner des fichiers |
|
|
|
+`git commit -a` | valide toutes les modifications courantes |
|
|
|
+`git mv <nom1> <nom2>` | renomme des fichiers versionnés |
|
|
|
+`git rm <fichiers>` | supprime des fichiers versionnés |
|
|
|
+`git log` | affiche la liste des commits |
|
|
|
+`git checkout -- .` | supprime les modifications courantes (revient au commit)|
|
|
|
+`git checkout <commit/etiquette>` | revient à un commit sans rien supprimer |
|
|
|
+`git tag` | affiche la liste des étiquettes |
|
|
|
+`git tag <etiquette>` | crée une nouvelle étiquette |
|
|
|
+`git reset <commit>` | supprime des commits et regroupe les modifications correspondantes dans l'état courant|
|
|
|
+`git reset --hard <commit>` | supprime des commits ainsi que les modifications correspondantes|
|
|
|
|
|
|
Quelques conseils de méthode de travail :
|
|
|
|
|
|
-- privilégier les petits dépôts, correspondant à différents travaux, plutôt
|
|
|
- qu'un gros dépôt regroupant tous les travaux de l'année
|
|
|
-- faire des commits réguliers et correspondant aux petites tâches successives
|
|
|
-- éviter de commiter un projet cassé (par exemple, du code qui ne compile pas)
|
|
|
-- ne pas versionner les fichiers auto-générés
|
|
|
+- privilégiez les petits dépôts, correspondant à différents travaux, plutôt
|
|
|
+ qu'un gros dépôt regroupant tous vos travaux de l'année
|
|
|
+- faites des commits réguliers et correspondant aux petites tâches successives
|
|
|
+- évitez de commiter un projet cassé (par exemple, du code qui ne compile pas)
|
|
|
+- ne versionnez pas les fichiers auto-générés
|
|
|
|
|
|
## Exercice
|
|
|
|
|
|
-
|
|
|
-TODO
|
|
|
+- TODO
|
|
|
|
|
|
* * * * *
|
|
|
|