Skip to content

Initiation GIT ​

Vous débutez avec GIT, le TP suivant vous fera parcourir les concepts de base de la ligne de commande Git.

Ressources utiles ​

Situation ​

Vous êtes en entreprise, vous avez un nouveau projet à réaliser. Le projet est plutôt conséquent (plusieurs semaines de travail), votre responsable vous indique que vous serez le seul développeur sur le code.

Questions ​

  • Voyez-vous d’autres questions à poser à votre chef de projet ?
  • Comment imaginez-vous l’organisation de votre travail ?
    • Un gestionnaire de version est-il utile ?
    • Si oui, pourquoi ?
    • Si non, pourquoi ?

Initialisation ​

Votre choix est fait, vous devez maintenant initialiser votre espace de travail, comment procédez-vous ?

Définir votre identité dans GIT ​

sh
$ git config --global user.email "email@example.com"
$ git config --global user.name "Valentin Brosseau"

Initialiser votre projet ​

sh
$ git init
Initialized empty Git repository in /private/tmp/mon_projet/.git/

Début du code ​

Maintenant que votre projet est initialisé, il faut maintenant créer les fichiers de base. Créer la structure suivante :

$ tree
.
├── Makefile
├── documentations
│   └── README.md
├── libs
│   ├── HTMLPurifier.php
│   └── fonction.php
├── public
│   ├── index.jpg
│   └── index.js
├── source
│   ├── index.html
│   ├── index.js
│   └── index.php
└── tests
    ├── test.js
    └── test.php

5 directories, 11 files

Question bonus ​

  • Comment avez-vous procédé ?
    • Est-ce la technique utilisée en entreprise ?
    • Est-ce pratique ?
    • Comment faire autrement ?

Vérifier le statut de Git après avoir tout créé

sh
git status
On branch master

No commits yet

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

	Makefile
	documentations/
	libs/
	public/
	source/
	tests/

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

Questions ​

  • Que constatez-vous ?
    • Quelles commandes faut-il faire maintenant ?
    • Une autre commande serait-elle utile ?

Ajouter les changements

sh
$ git add .
$ git commit -am "Initialisation"
[master (root-commit) 2804593] Initialisation
 11 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 Makefile
 create mode 100644 documentations/
 create mode 100644 libs/HTMLPurifier.php
 create mode 100644 libs/fonction.php
 create mode 100644 public/index.jpg
 create mode 100644 public/index.js
 create mode 100644 source/index.html
 create mode 100644 source/index.js
 create mode 100644 source/index.php
 create mode 100644 tests/test.js
 create mode 100644 tests/test.php
$ git status

Est-ce la seule façon de faire ? (Plusieurs réponses sont possibles)

sh
$ git add --all

Questions ​

  • Qu’avez-vous fait ?
  • Quelles sont les différences entre les deux commandes ?
  • Dans quel état est votre dépôt (repository) ?
  • À quoi sert la commande git status ?
    • Une autre commande permettrait-elle d’avoir une information similaire ?
  • Le commentaire que vous avez mis est-il correct ?
    • Est-il possible de l’améliorer ?
    • Si oui, comment ?

Ajout / Modification de fichiers ​

Modifier le fichier source/index.html, ajouter du contenu dedans (par exemple, une page HTML fictive)

sh
$ vim source/index.html

Vérifier que vos modifications sont présentes dans GIT

sh
$ git status
$ # Ou
$ git diff

Ajouter vos modifications dans Git

$ git commit -am "Ajout du code pour l’index.html"

Questions ​

  • À quoi servent les commentaires ?
    • Sont-ils utiles que pour vous ?
  • Y a-t-il plusieurs façons de faire ?
  • Comment vérifier que vos modifications ont bien été prises en compte ?
sh
$ git log

Modifier le message du précédent commit ​

Votre responsable n’est pas satisfait de la qualité du message de votre dernier commit, modifiez-le en utilisant Un template de message de commit

sh
$ git commit --amend

Questions ​

  • Pourquoi votre responsable vous a-t-il demandé de le modifier ?
  • Pourquoi le commentaire est-il aussi important ?

Ajout d’une évolution dans le précédent fichier ​

sh
$ vim source/index.html

Sauvegarder les modifications après avoir vérifié que celles-ci sont bien présentes

sh
$ git diff
$ git commit -a

Question ​

  • À votre avis, comment déterminer la fréquence des « commits » ?

Un coup d’œil dans le rétroviseur ​

Vérifier l’historique de votre projet

sh
$ git log
$ # ou
$ git log --oneline

Questions ​

  • Que constatez-vous ?
  • À quoi sert l’identifiant de chaque commit ? (Hash SHA)
  • Comment vérifiez-vous l’historique pour un fichier précis ?
  • Comment voir l’ensemble des modifications en détail pour le fichier source/index.html ?
  • Est-ce judicieux de travailler toujours sur la branche master ?

Une autre évolution ​

Votre première version est maintenant disponible pour les utilisateurs, votre responsable vous demande une évolution importante du code, celle-ci est majeure et changera complètement le comportement de votre application. Vous ne pouvez pas travailler directement sur la master.

Comment procédez-vous ?

sh
$ git branch evolution1
$ git checkout evolution1

Faites des modifications dans les fichiers que vous voulez.

Questions ​

  • Vérifier l’état de votre dépôt Git
  • Quel est l’avantage de travailler dans « une branche » ?
  • À votre avis quelles sont les prochaines étapes ?

Fusion / Merge de la fonctionnalité ​

Votre code est finalisé, il faut maintenant fusionner vos modifications avec « votre branch master » :

sh
$ git checkout master
$ git merge evolution1

Questions ​

  • À votre avis, en entreprise « merge / fusionne »-t-on directement sur la master ?
  • Une autre personne peut-elle / doit-elle être impliquée dans cette étape ?

Annulation, retour arrière ​

Faites des évolutions dans votre branche master (2 ou 3), ajoutez-les via git add. Votre responsable vous demande finalement de les annuler, car il ne souhaite pas garder la fonctionnalité. Comment procédez-vous ?

sh
$ git reset HEAD

Questions ​

  • Que vient-il de se produire ?
  • Est-il possible de récupérer vos modifications ?

Finalisation ​

Voilà, votre projet a atteint une première étape. Que pouvez-vous faire pour « marquer » cette première version ?

sh
$ git tag "V1"

Questions ​

  • Que vient-il de se produire ?
  • À votre avis, quel est l’intérêt de « taguer » une version ?
  • Quels sont les avantages de réaliser un tag ?
×

Reformulation

La reformulation (IA) peut faire des erreurs. Envisagez de vérifier les informations.