TP1 - Git profile

L'objectif de ce TP : découvrir Git et les commandes de base - sans utiliser d'interfaces graphiques.

Toutes les commandes git peuvent être ajoutées au mémo à réaliser. Il y a des questions auxquelles il faut répondre également.

Un peu de recherche préparatoire #

Nous allons utiliser la commande git sur votre ordinateur. À l'aide de la documentation de git, explorez les différentes commandes possibles avec GIT.

Ma petite cheatsheet

Partie 1 : Premières commandes #

Le but de cette partie est de prendre en main l'outil git en local.

Création du projet #

On va créer un dossier qui contiendra "README.md" dans un dossier nommé gitProfile à l'emplacement de votre choix.

Ce fichier contiendra le contenu EXACT suivant (on le modifiera plus tard) :

# Prénom NOM

Étudiant en première année BDDI à l'école-by-CCI en partenariat avec les Gobelins Paris,
Je recherche un stage puis une alternance qui me permettront d'appliquer tout ce que j'ai appris 
au cours de ma première année !
## Mon expérience
<!-- on détaillera plus tard-->
## Mes études
- Bachelor BDDI - 2020-2023
<!-- on détaillera plus tard-->
## Mes hobbies
J'aime le chocolat.

Initial commit #

faire un ls -al

On va commencer par initialiser un projet GIT.

Trouver la commande git qui permet d'initialiser un projet Git local à partir du workdir. faire un ls -al qu'est ce qui a changé dans le dossier ? Que contient le dossier .git ?

Regardons ensemble le status de git

Trouver la commande git qui permet de connaitre le status du projet.

Pourquoi le fichier README.md est dans les Untracked files

Quelles sont les 5 espaces

On branch master
No commits yet
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	README.md
nothing added to commit but untracked files present (use "git add" to track)

Ajouter le fichier README.md à l'index.

img.png

Expliquez les différents "espaces" ou "zones" d'un projet Git et leur but.

une super cheatsheet

Quel est le status actuel du fichier après l'avoir ajouté ?

On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
	new file:   README.md

On va enfin terminer par effectuer un commit avec le message suivant : Initial commit

Quel est le status actuel après avoir effectué le commit ?

Logs #

Il est temps de regarder les logs de commit.

Quelle commande doit-on utiliser pour récupérer les logs de git ?

commit 8f221ef000000000000000000000000 (HEAD -> master)
Author: decima <h.larget@gmail.com>
Date:   Sun Jan 31 14:22:10 2021 +0100
    Initial commit

Astuce : la commande log a plusieurs options utiles : graph, oneline et all.

Que font ces options ?

Modifier le projet #

Pour cette étape, on va modifier le fichier README.md, en remplaçant "Prénom NOM" par :

Prénom: votrePrénom, NOM: votreNom

avec les vraies valeurs cette fois.

Quel est le status actuel ?

Il existe une commande permettant d'afficher toutes les différences effectuées dans un fichier.

Quelle est cette commande ?

Que signifient les + et - au début de chaque lignes ?

Normalement, il n'y a que 2 lignes colorées :

-# Prénom NOM
+# Prénom: Henri, NOM: LARGET

Refaire toutes les étapes d'avant avec comme message de commit : Fixed: Missing first and lastname

Une fois cela fait, on peut retourner voir les logs et on constate la chose suivante :

* 3d11e43 (HEAD -> master) Fixed: Missing first and lastname
* 8f221ef Initial commit

Partie 2 : Versioning Branches et merge #

On se rend compte aujourd'hui que nous n'avions pas compris le premier exercice qui consistait à remplacer directement son prénom et son nom.

Pour cela, on va se mettre sur le commit "initial commit".

Trouvez la commande qui permet de retourner sur un commit par son identifiant

Qu'est-ce que HEAD ? Que signifie HEAD~1 ?

Si tout se passe bien, vous devez avoir le résultat du log suivant :

* 3d11e43 (master) Fixed: Missing first and lastname
* 8f221ef (HEAD) initial commit

Regarder le fichier README.md. Qu'est-ce qui a changé ?

Comment retourner sur "master" ?

Assurez-vous d'être sur le commit "initial commit".

Mettez à jour le fichier en remplaçant # Prénom NOM par vos vrais prénoms et noms cette fois.

Et commitez le changement comme vu dans la partie 1, avec comme message fix: my first and last name

le log devrait vous donner quelque chose comme ça :

* be75bb5 (HEAD) fix: my first and last name
| * 808a721 (master) fix: firstname and lastname
|/  
* 8f221ef initial commit

Avant de perdre ce commit, il faut l'associer à une branche.

Qu'est-ce qu'une branche dans Git ?

Créez une branche à partir du commit courant qui s'appellera fix-name.

Une fois cela fait, ajoutez à la fin du fichier readme :

© prénom NOM - 2021

Avec votre nom et prénom.

Le commit s'appellera adding copyright

l'arbre devrait ressembler à

* ed11102 (HEAD -> fix-name) adding copyright
* be75bb5 fix: my first and last name
| * 808a721 (master) fix: firstname and lastname
|/  
* 8f221ef initial commit

Merge #

On va retourner sur master.

Qu'est ce qu'un merge dans Git ?

Une fois cela fait, on va fusionner le travail de la branche fix-name dans master avec la commande merge.

git merge fix-name

Que se passe-t-il ?

CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

Allons voir le fichier :

<<<<<<< HEAD
## Prénom: Henri, NOM: LARGET
=======
## Henri LARGET
>>>>>>> fix-name

Un conflit est survenu dans le fichier. Pour le fixer, il faut décider de quelle version on souhaite conserver et quelle version on souhaite supprimer.

Chaque version commence par <<<<<, finit par >>>>> et est séparée par un =====.

Pourquoi prendre le temps de résoudre ce conflit ?

Résoudre le conflit de manière judicieuse en ne conservant que ce que vous souhaitez conserver, et supprimez le reste du fichier.

Il faut ensuite effectuer un commit, comme précédemment merge commit : fix conflict

Enfin on va supprimer la branche fix-name.

*   c84c38f (HEAD -> master) merge commit : fix conflict
|\  
| * ed11102 adding copyright
| * be75bb5 fix: my first and last name
* | 808a721 fix: firstname and lastname
|/  
* 8f221ef initial commit

Partie 3 : Clone et remote #

Pour continuer le tp il faut lancer dans le dossier gitProfile la commande

git config receive.denyCurrentBranch ignore

Pour cette partie, on va retourner dans le dossier parent du dossier dans lequel vous vous trouvez et créer un clone du projet avec la commande :

git clone gitProfile gitProfileCopy

Que s'est-il passé ? Que contient maintenant le dossier parent ?

On va retourner dans le dossier gitProfile et créer une nouvelle branche hobbies.

Sur cette branche, on va modifier le fichier README pour modifier la section "hobbies" du document et effectuer un commit.

* 5523194 (HEAD -> hobbies) adding my hobbies
*   c84c38f (master) merge commit : fix conflict
|\  
| * ed11102 adding copyright
| * be75bb5 fix: my first and last name
* | 808a721 fix: firstname and lastname
|/  
* 8f221ef initial commit

On va maintenant changer de dossier et aller dans ../gitProfileCopy et regarder le fichier README.md

le fichier a-t-il changé ? Sur quelle branche sommes-nous ?

On va mettre à jour ce projet avec l'autre puis aller sur la branche hobbies.

Trouver la commande qui permet de récupérer les modifications d'un git distant dans un clone.

* 5523194 (HEAD -> hobbies, origin/hobbies) adding my hobbies
*   c84c38f (origin/master, origin/HEAD, master) merge commit : fix conflict
|\  
| * ed11102 adding copyright
| * be75bb5 fix: my first and last name
* | 808a721 fix: firstname and lastname
|/  
* 8f221ef initial commit

Qu'est-ce que origin ?

La section hobbies est une mauvaise traduction, modifions le texte pour Loisirs. Une fois cela fait, il ne faut pas oublier de commit ses changements.

* 11bc614 (HEAD -> hobbies) fix: hobbies to loisirs
* 5523194 (origin/hobbies) adding my hobbies
*   c84c38f (origin/master, origin/HEAD, master) merge commit : fix conflict
|\  
| * ed11102 adding copyright
| * be75bb5 fix: my first and last name
* | 808a721 fix: firstname and lastname
|/  
* 8f221ef initial commit

Mettez à jour le projet gitProfile à partir de gitProfileCopy.

Trouvez la commande qui permet d'envoyer ses commits vers la source.

On va maintenant supprimer le dossier gitProfileCopy.

A-t-on toujours accès à l'autre projet et ses modifications ?

Partie 4 : Github #

Avant de parler Github, on va fusionner la branche hobbies dans master, créer une branche dev et travailler dessus.

Ajoutez également une image dans le projet, et mettez-en une référence dans le fichier README.md.

Présentez votre fichier final au prof !

Créez un compte Github. Attention, votre compte vous suivra partout, alors évitez les petiteFleureDu74 ou MerciJackyEtMichel 🍆, mais on peut se permettre de mettre un pseudonyme dans la limite du raisonnable.

Pour la suite du TP, on va parler de ce pseudo comme votrePseudo.

Maintenant, allez sur github et créer un projet qui s'appellera votrePseudo. L'objectif, à partir du projet actuel, de le mettre sur votre github.

Une fois cela fait, allez sur github.com/votrePseudo. Que voyez vous ?

Aspect Social #

Allez voir les profils de personnes, et suivez-les. Voici une liste de profils intéressants par exemple 😎 :

  • decima
  • AlbanCrepel
  • DamienDabernat
  • Akhu

Si vous avez apprécié mon cours, vous pouvez également star le projet : henri-corp/courses-2020-2021