# Cours Forge ZZ2 F2 2017

# Infos étudiant :

Par binôme Nom Prénom:
 * Piat Maxime
 * Jullien Nicolas


## TP 1


Télécharger le sujet du TP à l'adresse suivante :
https://gitlab.isima.fr/mazenovi/2017-F2-Forge

#### 1. Les basiques
0. Créer un repository git
```bash
git init
```
0. _Par la suite pensez à commiter votre compte rendu apres chaques étapes dont l'enoncé est terminé par `*`, pour les messages de commit vous pouvez utiliser les numéros des questions (Ex Q1.2 ici)_
0. Ajouter le compte rendu dans le repo `*`
```bash
git add tp1.md
```
0. Afficher la status de votre copie de travail
```bash
git status
```
0. Modifiez le CR pour supprimer la première partie et indiquez vos noms (n'oublier pas de faire un `git add` pour marque le fichier comme devant être ajouté) `*`
```bash
git add tp1.md
git commit -m "Q5"
```
```
[master (root-commit) 4daad73] Q5
 1 file changed, 83 insertions(+)
 create mode 100644 tp1.md
```
0. Afficher l'historique de votre repo
```bash
git log
```
```
commit 4daad730a102924142e89a5bda955f8b6a43e9bf
Author: Nicolas Jullien <nicolas.jullien@poste.isima.fr>
Date:   Mon Jan 8 18:28:26 2018 +0100

    Q5
```
0. Renommer ce fichier en préfixant avec vos noms en amendant le commit précédent (`git commit -m "mon message"` pour indiquer le mesage de commit directement) `*`
```bash
git commit -m "Q5 & Q7" --amend
```
```
[master 846659c] Q5 & Q7
 Date: Mon Jan 8 18:28:26 2018 +0100
 1 file changed, 102 insertions(+)
 create mode 100644 Piat_Jullien_tp1.md
```
0. Afficher l'historique de votre repo
```bash
git log
```
```
commit 846659c679f900048496541ff54b78b6222b4611
Author: Nicolas Jullien <nicolas.jullien@poste.isima.fr>
Date:   Mon Jan 8 18:28:26 2018 +0100

    Q5 & Q7
```
0. Il ne devrait y avoir que deux entrées dans l'historique pourquoi ? `*`
> Sachant que nous avons oublié le commit de la question 3, nous n'avons finalement qu'un seul commit. Ceux des questions 5 et 7 ont fusionné grâce au `--amend`.

0. Créer un nouveau fichier, nommé start, contenant la date et l'heure actuelle `*`
```bash
date > start
```
0. Créer un nouveau fichier : file2ignore
```bash
touch file2ignore
```
0. Afficher la status de votre copie de travail
```bash
git status
```
```
branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        file2ignore

nothing added to commit but untracked files present (use "git add" to track)
```
0. On souhaite que ce fichier soit ignoré et ne soit jamais commiter. Réalisez la configuration nécesaire pour que cette regle soit effective `*`
```bash
echo 'file2ignore' > .gitignore
```
0. Lister le contenu du repertoire courant, afficher le status et la log
```bash
ls
```
```
file2ignore  Piat_Jullien_tp1.md  start
```
```bash
git status
```
```
On branch master
nothing to commit, working tree clean
```
```bash
git log
```
```
commit 2427558ba3f9d06a536b143ab022dd446307c675
Author: Nicolas Jullien <nicolas.jullien@poste.isima.fr>
Date:   Mon Jan 8 18:55:12 2018 +0100

    Q13

commit 7633f494a8da552658e67a9d2aa195be7bd7ea55
Author: Nicolas Jullien <nicolas.jullien@poste.isima.fr>
Date:   Mon Jan 8 18:47:09 2018 +0100

    Q10

commit 60ee8acb56651230fc78df0c134a35c8e093899a
Author: Nicolas Jullien <nicolas.jullien@poste.isima.fr>
Date:   Mon Jan 8 18:45:39 2018 +0100

    Q9

commit 846659c679f900048496541ff54b78b6222b4611
Author: Nicolas Jullien <nicolas.jullien@poste.isima.fr>
Date:   Mon Jan 8 18:28:26 2018 +0100

    Q5 & Q7
```
0. Avant de commiter affichez les modifications par rapport à la précédente révision ? `*`
```bash
git diff Piat_Jullien_tp1.md
```
```
cf. q15.txt
 ```

##### 2. Les branches
0. Créez une branche portant votre nom et basculer sur cette branche (dans la suite du TP cette branche est désignée par `mybranch`)
```bash
git branch PiatJullien
git checkout PiatJullien
```
```
M       Piat_Jullien_tp1.md
Switched to branch 'PiatJullien'
```
0. Lister les branches locales et les fichiers présent dans le répertoire courant `*`
```bash
git branch
```
```
* PiatJullien
  master
```
0. Aficher le status de votre repo `*`
```
git status
```
0. Créez une branche pour _développer_ la réponse de ce point (nommez là `mybranch-2.4` par exemple)
  0. Afficher un historique sous forme de graph (`a dog`) de votre repo
  0. Pourquoi les 2 branches pointent elles sur la même révision ?`*`
  0. Afficher à nouvea l'historique pour montrer les modifications suite au précédent commit `*`
0. Revenir la brache `mybranch`
0. Où sont passé vos reponces au point 2.4 ? `*`
0. Affichez un historique sous forme de graph (`a dog`) de votre repo, Que peux ton en dire ?
0. Revenir sur la branche master
0. Ajoutez et commitez un fichier (touch new_file)
0. Revenir sur votre branche `mybranch` pour completer le compte rendu `*`
0. Affichez un historique sous forme de graph (`a dog`) de votre repo `*`

##### 3. Merge
0. Merge depuis head
  0. switcher sur une nouvelle branche `mybranch-3.1`
  0. ajout un nouveau fichier nommé easy_merge avec la date et l'heure actuelle `*`
  0. merger la branche `mybranch-4.1` sur `mybranch`
0. Afficher le status
0. Pourquoi n'y a t'il aucune modification en cours ? `*`
0. Affichez un historique sous forme de graph (`a dog`) de votre repo et décire l'état courant`*`
0. Merge avec modifications
  0. Mergez les modifications de la branche `mybranch-2.4` sur `mybranch` (`*echap* :wq *enter*` pour sauvegarder le message de commit et quitter)`*`
  0. Affichez un historique sous forme de graph (`a dog`) de votre repo `*`
0. Merge avec conflit
  0. Céer une nouvelle branche `mybranch-3.6`
  0. Notez dans le CR la date et l'heure actuelle (avec la commande `date` par exemple) `*`
  0. Switchez sur la nouvelle branche et modifiez la réponse précendante dans le CR avec le `*`
  0. Réalisez le merge de la brache `mybranch-3.6` sur `mybranch`. Le prompt change, pourquoi ? Gerer le conflit et commiter.
0. Supprimer les branches de feature et afficher toutes les branches restantes, affichez un historique sous forme de graph (`a dog`) de votre repo `*`

##### 4. Remote
0. Afficher l'historique de votre repo
0. Ajouter le projet "2017-F2-Forge" comme repository distant `*`
0. Lister les branches distantes
0. Pousser votre branche de votre repo local sur le repos distant `*`
0. En consultant votre branche sous gitlab, vous devriez constaté que la date de modification du fichier start est plus acienne que celle de votre compte rendu, porquoi alors que le push de toute votre branche est faite en une seule fois ?
0. Supprimer le dossier .git
0. Faire un git status ?