> For the complete documentation index, see [llms.txt](https://students.corentindesfarges.fr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://students.corentindesfarges.fr/cnam-fip-1a/tp-les-commandes-de-base.md).

# TP : Les commandes de base

## Mise en place et instructions

Pour ce TP, vous aurez besoin de [Git et Git Bash](https://gitforwindows.org/).

**À la fin de la séance du 17/09/2020**, merci de déposer un fichier .zip/.rar (ou équivalent) à [cette adresse](https://drive.google.com/drive/folders/1xRo1n-P9TCbl5Ku9oej_MnbQSCNaxTmB?usp=sharing), au format **NOM\_prenom\_TP01.zip**, contenant :\
\- L'intégralité de votre dossier de travail (le dossier masqué .git doit être présent)\
\- Un fichier (txt, pdf, docx, ...) contenant les commandes jouées lors de ce TP

Vous êtes libre d'ajouter à votre rapport les difficultés rencontrées.

## Un premier projet

Créez un dossier pour votre projet. Placez-y le fichier **index.html** ci-dessous :

{% code title="index.html" %}

```markup
<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>This is a Heading</h1>
    <p>This is a paragraph</p>
</body>
</html>
```

{% endcode %}

Initialisez le dépôt Git pour ce dossier. Le résultat doit être similaire à :

```
Initialized empty Git repository in C:/Users/corentin/monprojet/.git/
```

Identifiez vos prochains commits en définissant votre nom d'affichage et votre adresse email. Vous pouvez définir ces paramètres de manière globale en utilisant l'option `--global`

{% hint style="info" %}
Si vous avez déjà effectué cette manipulation en utilisation l'option `--global`, vous n'avez pas besoin de l'effectuer à nouveau.&#x20;
{% endhint %}

Consultez l'état du dépôt. Le résultat doit être similaire à :

```
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        index.html

nothing added to commit but untracked files present (use "git add" to track)
```

Ajoutez le fichier **index.html** à l'index Git. Si on consulte à nouveau l'état du dépôt, le résultat doit être similaire à :

```
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   index.html
```

Commitez les modifications ajoutées à l'index précédemment, en indiquant le message :

```
Ajout du fichier index.html
```

Le résultat de la commande est le suivant :

```
[master (root-commit) 47bf4f7] Ajout du fichier index.html
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 index.html
```

## Pour être bien sûr... (et tenir jusqu'à la fin  🙄)

Dans votre rapport, ajoutez les réponses aux questions suivantes :

1. Deux commits peuvent-ils avoir le même identifiant (hash) ? Si oui, dans quel cas ?
2. Peut-on ajouter d'un seul coup tous les fichiers d'un dossier au *stage* ? Si oui, comment ?
3. Peut-on ajouter un fichier au *stage* si celui-ci n'appartient pas au *working directory* ? Si oui, comment ?
4. Pensez-vous que certaines entreprise n'ont pas besoin d'utiliser d'outils de versioning ? Justifiez votre réponse en donnant quelques exemples. **La réponse "oui" est tout à fait admissible si bien justifiée.**
5. Une fois un fichier ajouté au *stage*, peut-on l'en retirer ? Si oui, comment ?
6. En deux ou trois phrase, qu'avez-vous pensez de la séance d'aujourd'hui ?
7. Avez-vous envie de travailler avec Linus Torvalds ?&#x20;
