... | ... | @@ -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).
|
|
|
|
|
|
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
|
|
|
|
|
|
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) :
|
|
|
|
|
|
__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
|
... | ... | @@ -185,7 +185,8 @@ La situation résultante est illustrée ci-dessous : |
|
|
|
|
|
[//]: 
|
|
|
|
|
|
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.
|
|
|
|
... | ... | @@ -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
|
|
|
|
|
|
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"
|
... | ... | @@ -203,9 +204,10 @@ MacBook-Air-749:4git sebastienjean$ git commit -m "ajout d'un fichier" |
|
|
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 :
|
... | ... | @@ -266,7 +268,7 @@ Une autre ligne de texte |
|
|
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
|
... | ... | @@ -282,7 +284,7 @@ MacBook-Air-749:4git sebastienjean$ |
|
|
|
|
|
__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
|
|
|
MacBook-Air-749:4git sebastienjean$ git diff
|
... | ... | @@ -296,7 +298,9 @@ index 927b61b..ee051bd 100644 |
|
|
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 :
|
|
|
|
... | ... | |