Update Gestion de versions locale avec git, les bases authored by Sebastien Jean's avatar Sebastien Jean
...@@ -154,14 +154,14 @@ Cette situation est illustrée ci-dessous : ...@@ -154,14 +154,14 @@ Cette situation est illustrée ci-dessous :
Les changements observés sont consignés par _git_ dans une zone nommée `unstaged` (qu'il s'agisse de la création d'un nouveau fichier ou de la suppression ou modification d'un fichier existant). Les changements observés sont consignés par _git_ dans une zone nommée `unstaged` (qu'il s'agisse de la création d'un nouveau fichier ou de la suppression ou modification d'un fichier existant).
Ces changements observés n'entrainent pas automatiquement la création d'une nouvelle version. :warning: Ces changements observés n'entrainent pas automatiquement la création d'une nouvelle version.
### Préparation d'une nouvelle version ### Préparation d'une nouvelle version
La sélection des changements à intégrer à la future nouvelle version est explicite et s'effectue La sélection des changements à intégrer à la future nouvelle version est explicite et s'effectue
s'effectue via la commande [`git add`](https://git-scm.com/docs/git-add) : s'effectue via la commande [`git add`](https://git-scm.com/docs/git-add) :
__N.B__. : On peut utiliser des jokers pour ajouter simultanément plusieurs fichiers, un répertoire, ... __N.B__. : On peut utiliser des _jokers_ pour ajouter simultanément plusieurs fichiers, un répertoire, ...
``` ```
MacBook-Air-749:4git sebastienjean$ git add unFichier.txt MacBook-Air-749:4git sebastienjean$ git add unFichier.txt
...@@ -185,7 +185,8 @@ La situation résultante est illustrée ci-dessous : ...@@ -185,7 +185,8 @@ La situation résultante est illustrée ci-dessous :
[//]: ![GitRepoStatusAdd](uploads/44667c5cc8bb44c3f280837d77724d78/GitRepoStatusAdd.png) [//]: ![GitRepoStatusAdd](uploads/44667c5cc8bb44c3f280837d77724d78/GitRepoStatusAdd.png)
Les changements pris en compte sont déplacés par _git_ dans une zone nommée `staged`. Cette prise en compte n'entraine pas automatiquement la création d'une nouvelle version. Les changements pris en compte sont déplacés par _git_ dans une zone nommée `staged`.
:warning: Cette prise en compte n'entraine pas automatiquement la création d'une nouvelle version.
La validation de la nouvelle version proprement dite est également une opération explicite. La validation de la nouvelle version proprement dite est également une opération explicite.
...@@ -193,7 +194,7 @@ __N.B__. : On peut annuler la prise en compte des changements pour un fichier vi ...@@ -193,7 +194,7 @@ __N.B__. : On peut annuler la prise en compte des changements pour un fichier vi
### Création d'une nouvelle version ### Création d'une nouvelle version
La création d'une nouvelle version (commit) s'effectue via la commande [`git commit`](https://git-scm.com/docs/git-commit) : La création d'une nouvelle version (_commit_) s'effectue via la commande [`git commit`](https://git-scm.com/docs/git-commit) :
``` ```
MacBook-Air-749:4git sebastienjean$ git commit -m "ajout d'un fichier" MacBook-Air-749:4git sebastienjean$ git commit -m "ajout d'un fichier"
...@@ -203,9 +204,10 @@ MacBook-Air-749:4git sebastienjean$ git commit -m "ajout d'un fichier" ...@@ -203,9 +204,10 @@ MacBook-Air-749:4git sebastienjean$ git commit -m "ajout d'un fichier"
MacBook-Air-749:4git sebastienjean$ MacBook-Air-749:4git sebastienjean$
``` ```
L'option `-m` permet ici de spécifier le message de commit. Celui-ci répond à la question _Pourquoi ?_ de la nouvelle version (les changements pris en compte répondent à la question _Comment ?_, la date d'exécution de la commande répond à la question _Quand ?_, les propriétés de la section `[user]` du fichier de confiuguration répondent quant à eux à la question _Qui ?_). L'option `-m` permet ici de spécifier le message de commit. Celui-ci répond à la question _Pourquoi ?_ de la nouvelle version (les changements pris en compte répondent à la question _Comment ?_, la date d'exécution de la commande répond à la question _Quand ?_, les propriétés de la section `[user]` du fichier de configuration répondent quant à eux à la question _Qui ?_).
Le message de commit est constitué d'un résumé qui doit tenir sur une ligne et une description détaillée optionnelle, de longueur variable et séparée du résumé par une ligne vide. L'option `-m` permet d'indiquer rapidement et facilement un message sans description détaillée. De façon plus générale, sans l'option `-m`, l'exécution de la commande est déroutée vers un éditeur de texte qui permet d'indiquer un message adapté à la situation. Le message de commit est constitué d'un **résumé** qui doit tenir **sur une ligne** et une **description détaillée optionnelle**, de longueur variable et séparée du résumé par une **ligne vide**.
L'option `-m` permet d'indiquer rapidement et facilement un message sans description détaillée. De façon plus générale, sans l'option `-m`, l'exécution de la commande est déroutée vers un éditeur de texte qui permet de rédiger un message adapté à la situation.
La situation résultante est illustrée ci-dessous : La situation résultante est illustrée ci-dessous :
...@@ -266,7 +268,7 @@ Une autre ligne de texte ...@@ -266,7 +268,7 @@ Une autre ligne de texte
MacBook-Air-749:4git sebastienjean$ MacBook-Air-749:4git sebastienjean$
``` ```
la commande `git status` va, sans surprise, faire état d'un changement (consigné dans _unstaged_) : La commande `git status` va, sans surprise, faire état d'un changement (consigné dans _unstaged_) :
``` ```
MacBook-Air-749:4git sebastienjean$ git status MacBook-Air-749:4git sebastienjean$ git status
...@@ -282,7 +284,7 @@ MacBook-Air-749:4git sebastienjean$ ...@@ -282,7 +284,7 @@ MacBook-Air-749:4git sebastienjean$
__N.B.__ : ici, le fichier est déjà connu. __N.B.__ : ici, le fichier est déjà connu.
La commande [`git diff`](https://git-scm.com/docs/git-diff), sans paramètre, nous permet de comparer le _Working Tree_ et la version `HEAD` (et ainsi voir tout ce qui est déclaré _unstaged_) : La commande [`git diff`](https://git-scm.com/docs/git-diff), sans paramètre, permet de comparer le _Working Tree_ et la version `HEAD` (et ainsi voir tout ce qui est déclaré _unstaged_) :
```diff ```diff
MacBook-Air-749:4git sebastienjean$ git diff MacBook-Air-749:4git sebastienjean$ git diff
...@@ -296,7 +298,9 @@ index 927b61b..ee051bd 100644 ...@@ -296,7 +298,9 @@ index 927b61b..ee051bd 100644
MacBook-Air-749:4git sebastienjean$ MacBook-Air-749:4git sebastienjean$
``` ```
Pour chaque changement sur un fichier, une description des changements à la syntaxe [_diff_](https://en.wikipedia.org/wiki/Diff#Unified_format) est produite. Elle fusionne les 2 versions du fichier et annote les endroits où se produisent les 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. Pour chaque changement sur un fichier, une description des changements à la syntaxe [_diff_](https://en.wikipedia.org/wiki/Diff#Unified_format) est produite. Elle fusionne les 2 versions du fichier et annote les endroits où se produisent les changements.
> :bulb: 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.
On suppose que l'on valide ces modifications : On suppose que l'on valide ces modifications :
... ...
......