Updated "Gestion de versions locale avec git, les bases" authored by Sebastien Jean's avatar Sebastien Jean
...@@ -286,3 +286,76 @@ MacBook-Air-749:4git sebastienjean$ ...@@ -286,3 +286,76 @@ MacBook-Air-749:4git sebastienjean$
``` ```
Pour chaque changement sur un fichier, une description des changements à la syntaxe _diff_ est produite. Elle fusionne les 2 versions du fichier et note les endroits des changements. L'outil _diff_ ne travaille qu'au niveau d'un ligne (pas au niveau de son contenu), ainsi une modification sur une ligne à l'endroit désigné du fichier est vue comme la suppression (`-`) de la ligne et l'ajout (`+`) d'une autre ligne (cf. documentation pour plus de détails) Pour chaque changement sur un fichier, une description des changements à la syntaxe _diff_ est produite. Elle fusionne les 2 versions du fichier et note les endroits des changements. L'outil _diff_ ne travaille qu'au niveau d'un ligne (pas au niveau de son contenu), ainsi une modification sur une ligne à l'endroit désigné du fichier est vue comme la suppression (`-`) de la ligne et l'ajout (`+`) d'une autre ligne (cf. documentation pour plus de détails)
On suppose que l'on valide ces modifications :
```
MacBook-Air-749:4git sebastienjean$ git commit -a -m "modification du fichier"
[master e08fe66] modification du fichier
1 file changed, 1 insertion(+), 1 deletion(-)
MacBook-Air-749:4git sebastienjean$
```
__N.B.__ : ici, l'e fichier est déjà connu.'option `-a` permet d'éviter l'appel à `git add` et inclus à la nouvelle version l'intégralité du contenu de la zone _unstaged_.
Il y a donc maintenant 2 versions :
```
MacBook-Air-749:4git sebastienjean$ git log --pretty="format:%h %s"
e08fe66 modification du fichier
146f51a ajout d'un fichier
MacBook-Air-749:4git sebastienjean$
```
On considère que l'on édite de nouveau le contenu du fichier précédent en modifiant le texte sur la première ligne pour produire le résultat suivant :
```
MacBook-Air-749:4git sebastienjean$ more unFichier.txt
Encore une autre ligne de texte
MacBook-Air-749:4git sebastienjean$
```
Il est alors possible, avec `git diff`, de comparer le contenu du fichier à différentes versions :
- _working tree_ Vs `HEAD` :
```diff
MacBook-Air-749:4git sebastienjean$ git diff unFichier.txt
diff --git a/unFichier.txt b/unFichier.txt
index ee051bd..53c5f7f 100644
--- a/unFichier.txt
+++ b/unFichier.txt
@@ -1 +1 @@
-Une autre ligne de texte
+Encore une autre ligne de texte
MacBook-Air-749:4git sebastienjean$
```
- `HEAD` Vs `HEAD~1` (la version parente de `HEAD`) :
```diff
MacBook-Air-749:4git sebastienjean$ git diff HEAD~1 HEAD unFichier.txt
diff --git a/unFichier.txt b/unFichier.txt
index 927b61b..ee051bd 100644
--- a/unFichier.txt
+++ b/unFichier.txt
@@ -1 +1 @@
-Une ligne de texte
+Une autre ligne de texte
```
- _working tree_ Vs `HEAD~1` :
```diff
MacBook-Air-749:4git sebastienjean$ git diff HEAD~1 unFichier.txt
diff --git a/unFichier.txt b/unFichier.txt
index 927b61b..53c5f7f 100644
--- a/unFichier.txt
+++ b/unFichier.txt
@@ -1 +1 @@
-Une ligne de texte
+Encore une autre ligne de texte
```
__N.B.__ : On peut aussi utiliser les _hash_ (abbréviés ou non) des commits mais il est parfois plus simple de se répérer par rapport à `HEAD` (`~1` pour le commit parent, `~2` pour le commit grand-parent, ...) ou même par rapport à `Master` (de la même manière)