Skip to content

quick start 01 single

Julien Castiaux edited this page Feb 12, 2023 · 4 revisions

Démarrage - Premier Projet

Ce tutoriel vous accompagne dans la création d'un projet sur Github et vous explique comment récupérer ce projet sur votre ordinateur pour pouvoir travailler dessus. Ce tutoriel vous accompagne également dans l'étape inverse, c'est à dire comment envoyer du travail effectué sur votre ordinateur vers Github et ainsi le sauvegarder.

Ce tutoriel n'explique pas comment collaborer à plusieurs sur un même projet ou bien seul depuis plusieurs ordinateurs. Ces thématiques sont abordées dans le prochain tutoriel.

Vous devez avoir un compte Github, installé et configuré git (Windows/Linux/MacOS). Si vous préférer ne pas utiliser la ligne de commande, assurez-vous d'avoir installé Github Desktop.

Création d'un projet sur Github

Allez sur https://github.com, connectez vous si ce n'est pas déjà fait et cliquez dans le coin supérieur droit sur le "+" et ensuite sur "New repository". Un "repository" est le jargon de git qui désigne un projet.

new-repo

Vous arrivez sur une page qui vous demande de donner un nom à votre nouveau projet ainsi que quelques options supplémentaires. Pour la suite de ce tutoriel nous allons utiliser la configuration suivant, vous êtes libre de rendre votre projet privé.

  • Repository Name: sandbox
  • Description: Un bac-à-sable pour s'entrainer avec git et github
  • Public / [ ] Private
  • Readme
  • .gitignore template: Python
  • License: MIT License

new-repo-form

Vous pouvez valider le formulaire pour créer votre projet. Vous arrivez alors sur la page principale de votre projet. Vous devriez déjà voir trois fichiers:

  • .gitignore
  • LICENSE
  • README.md

clean-repo

Manipulation du projet en ligne de commande

Téléchargement du projet (cli)

Clone (cli)

Ouvrez un terminal (ou le Git bash) dans le dossier où vous voulez télécharger votre projet. Dans notre cas, nous allons le cloner dans le dossier ~/Ephecs au moyen de la commande git clone suivi de l'URL de votre projet. Vous pouvez trouver cette URL sur le bouton vert "code" dans le coin supérieur droit de la liste des fichiers sur Github. Une fois la commande exécutée vous pouvez vous rendre dans le dossier et exécuter la commit git status pour vérifier que le projet est bien initialisé sur votre machine.

~/Ephec $ git clone https://github.com/julien00859/sandbox  # modifiez l'URL
Cloning into 'sandbox'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (5/5), done.

~/Ephec$ cd sandbox
~/Ephec/sandbox$ git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

Précision importante, si vous aviez créé un projet privé, il vous sera demandé d'entrer votre connecter à github. Si vous tombez sur le message d'erreur suivant:

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/julien00859/sandbox/'

Ce que vous n'avez pas installé le Git Credential Manager, rendez-vous sur le tutoriel pour installer git correspondant à votre système (Windows/Linux/MacOS) et suivez les instructions pour l'installer.

Une alternative peut-être plus recommandée pour les systèmes Linux est d'interagir avec Github au moyen d'une pair de clé SSH.

Config (cli)

Lors de la création de votre compte github, nous vous avions invité à configurer plusieurs adresses emails, votre adresse personnelle ainsi que votre adresse Ephec. Comme nous commençons un projet dans le cadre des cours, nous allons configurer git pour qu'il utilise votre adresse Ephec dans ce projet.

~/Ephec/sandbox$ git config user.email "[email protected]"

Vous remplacez évidemment xxxxxx par votre propre matricule. Notez que vous voulez utiliser cette adresse email dans ce projet uniquement, vous ne voulez pas remplacer votre configuration globale pour les nouveaux projets: vous ne devez pas mettre l'option ||--global||.

Cycle add/commit/push (cli)

Vous pouvez ouvrir le fichier README.md avec votre éditeur de texte préféré et le modifier pour rajouter une ligne. Ce que vous allez écrire n'a pas d'importance, vous pouvez vous contenter d'écrire "Bonjour". Le but ici est de faire des modification, de constater ces modifications avec git status et git diff, de créer un commit avec git commit et de l'envoyer sur Github avec git push.

Status & Diff (cli)

~/Ephec$ echo -e "\nBonjour" >> README.md

~/Ephec/sandbox$ git status
On branch main
Your branch is up to date with 'origin/main'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

~/Ephec/sandbox$ git diff
diff --git a/README.md b/README.md
index 1a5376e..51a4dfc 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,4 @@
 # sandbox
 Un bac-à-sable pour s'entrainer avec git et github
+
+Bonjour

Avec la commande git status vous pouvez avoir un aperçus de ce qui est en train de changer. Nous vous recommandons de taper cette commande régulièrement, le texte affiché avec cette commande regorge d'informations utiles. Dans le cas présent on peut lire que nous sommes sur la branche main, que le fichier README.md a été modifié mais qu'il n'a pas encore été préparé dans un commit, qu'il est possible d'utiliser soit git add README.md pour le préparer dans un commit ou bien git restore README.md pour annuler les changements et enfin qu'il n'y a rien qui n'a été encore préparé dans un nouveau commit.

Avec la commande git diff vous pouvez voir ce qui a réellement changé, ligne par ligne, depuis le dernier commit. Encore une fois il s'agit d'une commande très utile que vous allez taper régulièrement. Ici on apprend que le fichier README.md a changé vers les lignes 2 et 4 (@@ -1,2 +1,4 @@) et qu'il y a eu deux ajouts (+) de texte: une ligne vide et "Bonjour".

Add (cli)

~/Ephec/sandbox$ git add README.md 
~/Ephec/sandbox$ git status
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    modified:   README.md

Avec la commande git add vous pouvez ajouter un fichier pour faire parti du prochain commit. Vous pouvez aussi donner le chemin d'un dossier pour ajouter tous les fichiers qui se trouvent dans ce dossier de manière récursive, cette technique fonctionne aussi avec . qui représente le dossier courant.

Nous avons tapé la commande git status une nouvelle fois pour constater les changements. La commande nous informe que le fichier README.md va faire parti du prochain commit. Elle nous apprend aussi qu'il est possible d'annuler l'opération (retirer le fichier du prochain commit) au moyen de la commande git restore --staged README.md.

Commit (cli)

~/Ephec/sandbox$ git commit -m "doc(README): greet new users"
[main ce55515] doc(README): greet new users
 1 file changed, 1 insertion(+)

~/Ephec/sandbox$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

Avec la commande git commit vous pouvez créer un nouveau commit sur base de ce qui a été préparé avec la commande git add. L'option -m nous permet de directement donner un message (qui doit être écrit entre guillemet). Nous verrons dans la suite du cours comment écrire de bons messages de commit. Pour le moment, ce message sur une seule ligne suffira.

Nous avons encore tapé la commande git status pour constater les changements. Cette fois on trouve le message "nothing to commit, working tree clean" qui signifie que tous les fichiers sont présents dans des commits. On peut aussi lire "Your branch is ahead of 'origin/main' by 1 commit", git a constaté qu'il y a du travail présent sur cet ordinateur qui n'a pas encore été synchronisé avec github (origin/main signifie "la branche main telle que vu par github") et nous propose d'entrer la commande git push pour se synchroniser.

Show & Log (cli)

Avant de se synchroniser, voyons deux nouvelles commandes (après status et diff) qui permettent de constater l'état actuel des choses: git log et git show.

~/Ephec/sandbox$ git log
commit ce55515e63a8264006128a97e8513d3f6f0ba3a5 (HEAD -> main)
Author: Julien Castiaux <[email protected]>
Date:   Sun Feb 5 13:11:38 2023 +0100

    doc(README): greet new users

commit 0efccf023c85f44b2eedb99e58c9223135160d2e (origin/main, origin/HEAD)
Author: Julien Castiaux <[email protected]>
Date:   Fri Feb 3 00:44:18 2023 +0100

    Initial commit

Avec la commande git log vous pouvez afficher l'historique de tous les commits (listé du plus récent au plus ancien). On lit ici qu'il y a un total de 2 commits.

Le 1e dont le hash commence par 0efccf0 a été fait par "Julien Castiaux" avec l'email "[email protected]" dans la nuit du 3 février 2023. Le message de commit est "Initial commit" et c'est aussi le dernier commit connu de github (origin/main). C'est le commit qui a automatiquement créé par Github lors de la création du projet. On peut constater que l'adresse email utilisée est l'adresse email principale de l'auteur. Nous verrons plus tard dans le cours comment modifier des précédents commits pour corriger ce genre de petit soucis.

Le 2e dont le hash commence par ce55515 a été fait par "Julien Castiaux" avec l'email "[email protected]" l'après-midi du 5 février 2023. Le message de commit est celui que nous avons tapé plus tôt "doc(README): greet new users" et c'est le dernier commit connu de cet ordinateur (main).

Précisons que pour calculer le hash des commits, git utilise le nom et l'email de auteur ainsi la date et l'heure. De ce fait vous devriez avoir des hash différents. Il n'y a aucun problème à cela.

Comme la commande git status nous l'a rapporté, il y a bien un commit en plus sur notre branche main par rapport à la branche main telle que connue de Github.

~/Ephec/sandbox$ git show ce55515
commit ce55515e63a8264006128a97e8513d3f6f0ba3a5 (HEAD -> main)
Author: Julien Castiaux <[email protected]>
Date:   Sun Feb 5 15:43:27 2023 +0100

    doc(README): greet new users

diff --git a/README.md b/README.md
index 1a5376e..51a4dfc 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,4 @@
 # sandbox
 Un bac-à-sable pour s'entrainer avec git et github
+
+Bonjour

Avec la commande git show vous obtenir toutes les informations d'un commit. Par défaut, l'auteur, la date, le message de commit et les modifications apportées par le commit (la diff) sont listés.

Push (cli)

~/Ephec/sandbox$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 308 bytes | 308.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/Julien00859/sandbox.git
   0efccf0..ce55515  main -> main

Avec la commande git push, nous pouvons synchroniser notre travail avec github. Il se peut que git vous demande d'entrer votre passphrase si vous utilisez git avec ssh. Il se peut aussi qu'une fenêtre s'ouvre et vous demande de vous connecter à github. Entre vos informations pour que l'opération puisse continuer.

⚠️ Si git vous demande votre login et votre mot de passe directement dans votre terminal, c'est que vous n'avez pas installé le Git Credential Manager (Windows/Linux/MacOS) et l'opération risque d'échouer avec un message d'erreur similaire à :

remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication. fatal: Authentication failed for 'https://github.com/julien00859/sandbox/'

Git status et git log une nouvelle fois pour constater les changements.

~/Ephec/sandbox$ git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

Même message qu'au tout début, nous sommes synchronisé avec Github et nous n'avons pas modifié aucun fichier depuis le dernier commit.

~/Ephec/sandbox$ git log
commit ce55515e63a8264006128a97e8513d3f6f0ba3a5 (HEAD -> main, origin/main, origin/HEAD)
Author: Julien Castiaux <[email protected]>
Date:   Sun Feb 5 13:11:38 2023 +0100

    doc(README): greet new users

commit 0efccf023c85f44b2eedb99e58c9223135160d2e
Author: Julien Castiaux <[email protected]>
Date:   Fri Feb 3 00:44:18 2023 +0100

    Initial commit

Il y a toujours deux commits et ce55515 est toujours le commit le plus récent sur notre branche. La seule différence avec la précédente exécution de la commande est que cette fois ce55515 est également le commit le plus récent connu par Github. Nous sommes bel et bien synchronisé.

Vous pouvez visualiser les changements sur l'interface de Github. C'est une bonne manière de vérifier une seconde fois que tout s'est déroulé comme prévu.

Manipulation du projet avec Github Desktop

Téléchargement du projet (desktop)

Clone (desktop)

Ouvrez Github Desktop et cliquez sur "Clone repository..." dans le menu "File" dans le coin supérieur gauche. Un formulaire s'ouvre qui vous invite à préciser quel projet cloner depuis votre compte Github et où vous voulez que le dossier soit créé sur votre ordinateur.

desktop-clone

Une fois le projet téléchargé vous devriez atterrir sur la page d'accueil de Github Desktop qui ne devrait montrer aucun changement en cours. Vous devriez aussi pouvoir ouvrir le dossier contenant votre projet dans votre explorateur de fichier.

desktop-explorer

Config (desktop)

Lors de la création de votre compte github, nous vous avions invité à configurer plusieurs adresses emails, votre adresse personnelle ainsi que votre adresse Ephec. Comme nous commençons un projet dans le cadre des cours, nous allons configurer Github Desktop pour qu'il utilise votre adresse Ephec dans ce projet.

Cliquez sur "Repository settings..." dans l'onglet Repository, un formulaire s'ouvre, allez dans le menu "Git config". Vérifiez que votre configuration globale est correcte et corrigez la au besoin (elle doit utiliser votre adresse email personnelle). Modifier ensuite la configuration pour utiliser une configuration locale et modifiez votre adresse email pour mettre votre adresse Ephec.

desktop-config

Cycle add/commit/push (desktop)

Vous pouvez ouvrir le fichier README.md avec votre éditeur de texte préféré et le modifier pour rajouter une ligne. Ce que vous allez écrire n'a pas d'importance, vous pouvez vous contenter d'écrire "Bonjour". Le but ici est de faire des modification, de constater ces modifications, de créer un commit et de l'envoyer sur Github.

desktop-clone

Une fois ces modifications faites et enregistrées dans votre éditeur de texte, vous pouvez revenir dans Github Desktop, l'application devrait constater vos modifications.

L'application se découpe en 3 espaces. Le premier qui occupe l'espace à droite (en brun sur le screenshot) affiche l'ensemble des modifications qui ont été apportés aux différents fichiers depuis le dernier commit. On retrouve dans cette espace qu'on appelle la "diff" (pour la commande git diff qui affiche la même chose en ligne de commande) les modifications qu'on a apporté au README. Dans le second espace en haut à gauche (en vert sur le screenshot) on retrouve la liste des fichiers qui ont été modifié. Vous pouvez cocher les fichiers que vous souhaitez préparer pour le prochain commit. Dans le dernier espace en bas à gauche (en rose sur le screenshot) vous pouvez créer un nouveau commit sur base des modifications que vous avez sélectionnées.

Cochez le fichier README.md pour le préparer dans le commit et créez un commit avec un titre uniquement. Nous verrons dans la suite du cours comment écrire de bons messages de commit. Pour le moment, un titre unique suffira.

desktop-dirty

Une fois le commit créé vous pouvez vous déplacer dans l'onglet "History" en haut à gauche et sélectionner le commit que vous venez de créer. La partie à gauche (en vert sur le screenshot) où vous venez de sélectionner le commit s'appelle l'historique ou encore le "log" (pour la commande git log qui affiche la même chose). La partie à droite (en bleu sur le screenshot) contient votre commit, le titre du commit, le message de commit (absent dans le cas présent), l'auteur, le hash du commit (daaec07 sur le screenshot) ainsi que la liste des fichiés modifiés et les modifications apportées à chaque fichier.

Vous pouvez ensuite cliquer sur le bouton "Push origin" dans le coin supérieur droit de votre écran pour vous synchroniser avec Github.

Visualisation des changements sur Github

Une fois que vous avez poussez push vos commits sur Github, vous devriez pouvoir constater les changements.

github-code

En rouge, vous pouvez constater qu'il y a bien eu un nouveau commit et que Github a correctement associé le combo Julien Castiaux <[email protected]> à l'utilisateur Julien00859. Toujours en rouge vous pouvez aussi voir que le commit a bien modifié le README pour y ajouter "Bonjour".

En bleu, vous pouvez accéder à l'historique de tous vos commits.

github-commits

On retrouve ici le même historique que nous avions en local sur notre ordinateur avec la commande git log ou dans l'onglet "history" de Github Desktop.

En vert, vous pouvez accéder au commit que vous venez d'envoyer depuis votre ordinateur.

github-commit

On retrouve ici les mêmes informations relatives à notre commit que nous avions en local sur notre ordinateur avec la commande git show ou dans la visualisation du commit sur Github Desktop.