Introduction à Git & Github
Publié le 10 min de lecture
Mis à jour le
Cet outil possède trois fonctions principales :
- Revenir à une version antérieure de votre code en cas de problèmes
- Suivre l’évolution de votre code étape par étape
- Travailler en collaboration sans risquer la suppression des modifications d’autres contributeurs
Comment ça fonctionne
Git fonctionne de manière similaire à une sauvegarde incrémentale, où un ensemble de dossiers/fichiers seront ajoutés au projet. Par la suite, un historique complet des modifications du projet sera disponible - ces modifications peuvent être ignorées, ajoutées, supprimées ou fusionnées.
Git offre un système de branches, ce qui permet par exemple, de développer du contenu sur la branche principale sans l’altérer. C’est parce que Git aura préalablement fait une sorte de clone secondaire de la branche
(en utilisant la commande git checkout -b mabranche).

-
Le répertoire de travail (Working directory) correspond au dossier du projet sur la machine.
-
Le Stage ou Index est l’étape intermédiaire représentant tous les fichiers modifiés qui ont été “staged”. Voir comment ajouter des dossiers et fichiers au dépôt.
-
Le dépôt (repository) est l’ensemble du projet avec ses commits.
Dépôt local
- Un dépôt est l’ensemble des dossiers/fichiers qui constituent un projet initié par Git.
- Dans la documentation en ligne ou en milieu professionnel, on parle souvent de repositories.
- Le dépôt local est stocké directement sur la machine.
Dépôt distant
- Le dépôt distant est hébergé sur un serveur distant
Initialiser un dépôt
Se rendre dans le répertoire souhaité, par exemple : cd ~/monprojet
tip: Using 'master' as the name of the initial branch. This default branch nametip: is subject to change. To configure the initial branch name for all newtip: repositories, and suppress this warning, run:tip:tip: git config --global init.defaultBranch <name>tip:tip: Names commonly chosen instead of 'master' are 'main', 'trunk' andtip: 'development'. The newly created branch can be renamed with:tip:tip: git branch -m <name>Empty Git repository initialized in /home/contact/contactit.fr/.git/Cloning into 'myproject.git'...remote: Enumerating objects: 11779, done.remote: Counting objects: 100% (82/82), done.remote: Compressing objects: 100% (66/66), done.remote: Total 11779 (delta 52), reused 33 (delta 16), pack-reused 11697Receiving objects: 100% (11779/11779), 23.50 MiB | 11.34 MiB/s, done.Resolving deltas: 100% (7047/7047), done.La commande git clone va directement importer le projet et ses fichiers sources dans un dossier portant son nom.
- Il peut être nécessaire de mettre à jour le dépôt suite à un changement effectué par un autre contributeur du projet, utilisez la commande :
git pull origin mabrancheVérification
total 12drwxr-xr-x 3 contact contact 4096 Sept. 5 15:26 .drwxr-x--- 14 contact contact 4096 Sept. 5 15:23 ..drwxrwxr-x 7 contact contact 4096 Sept. 5 15:26 .gitLe dépôt .git est présent dans le répertoire sous forme de dossier caché.
Ajout de dossiers/fichiers au dépôt :
La commande git add permet d’indexer des fichiers à Git.
- Une fois les dossiers/fichiers indexés, il est possible d’effectuer un commit après avoir modifié un élément.
Quelques exemples :
git add READMEajoute le fichierREADMEgit add .ajoute tous les dossiers et fichiers du répertoire où.gitest situé.
.gitignore
.gitignoreest un fichier qui liste les dossiers/fichiers ignorés par Git.- Il suit une syntaxe définie.
Quelques exemples :
*.logignore tous les fichiers avec l’extension.log/dossierignore le dossier de manière récursive.
Plus d’informations sont disponibles ici
Commits
Un “commit” est une version des dossiers/fichiers précédemment indexés, qui est différente de la version suivante.
- La commande
git commitpermet de valider les modifications apportées aux fichiers indexés ou “staged” par Git.
Installation de Git
[sudo] Password for contact:Reading package lists... DoneBuilding dependency tree... DoneReading state information... Donegit is already the newest version (1:2.34.1-1ubuntu1.4).git set as "manually installed"0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.1 partially installed or removed.After this operation, 0 B of additional disk space will be used.Do you want to continue? [Y/n]- Validez l’installation :
You ajoutez l’option-yà la fin de la commande.
Identité
L’identité dans Git est simplement votre nom et votre adresse e-mail.
Ces deux informations sont nécessaires pour la validation par Git :
-
git config --global user.name "John Doe" -
git config --global user.email contact@contactit.fr
- Pour vérifier que vos paramètres ont été pris en compte, il suffit de passer la commande :
git config --list
Pousser le dépôt
Ajouter l'origine distante
Fenêtre de terminal git remote add origin https://github.com/username/project/myproject.gitSélectionner la branche
Fenêtre de terminal git branch -M mabrancheTéléverser le dépôt
Fenêtre de terminal git push -u origin mabranche
Branches
-
Une branche est une copie du projet à un instant
Tdonné, toutes les modifications qui lui sont apportées n’affecteront que celle-ci. Cela permet d’avoir plusieurs états du projet en même temps. -
La branche principale est la branche
main(anciennement appeléemasteravant octobre 2020). Cette branche est souvent la branche de production, donc stable, du projet. -
Il peut y avoir d’autres noms de branches comme :
devoustaging, ce sont des branches de développement non stables, des tests et vérifications seront effectués sur elles une fois le développement terminé. -
Si le résultat est concluant, il peut être possible de fusionner ces branches vers la branche
mainoumaster. Les branches sont souvent utilisées pour recréer un environnement de test / pré-production et production.

Git peut être comparé à un arbre :
-
Le tronc de l’arbre est la branche principale du projet (la plupart du temps : main ou master)
-
Les branches sont des éléments qui proviennent du tronc mais partent dans différentes directions
-
Les feuilles sont les unes au-dessus des autres, plus ou moins nombreuses et tombent ou restent sur les branches comme des commits.
-
Conclusion : en hiver il y a plus de commits
-
La commande
git branchpermet de lister les branches du dépôt :
list* master- Ici il y a deux branches : list et master maintenant main.
Le
*indique que je suis actuellement dans la branche master.
- La commande
git checkout mabranchepermet de changer de branche :
Switched to branch 'mabranche'- Il est possible de créer une branche depuis un commit avec l’une des commandes suivantes :
git checkout -b manouvellebranche <commit_sha>- Pour obtenir le
sha(hash) du commit, on peut utiliser la commande :
* 5aaf865 Deletion of README* 6746dbc Adding test text* 931dc0f Creation of READMELe sha est constitué des caractères hexadécimaux après le ”*” 931dc0f, par exemple.
Git stash
-
La commande
git stashpermet de mettre un commit de côté pour que la branche actuelle devienne propre, donc sans données dans la zone de stage. Cette situation est adaptée lorsqu’un commit n’a pas été effectué et que les modifications sont toujours dans le stage. -
En pratique, la commande
git statusretourne qu’il y a plusieurs modifications (dans la zone de stage) qui n’ont pas été commitées. -
Stashpermet de les mettre de côté, pour pouvoir les insérer dans une autre branche, ce qui peut être utile lorsque vous vous êtes trompé de branche ! -
Après avoir exécuté la commande
git stashsi vous relancez la commandegit status, elle retourne que le répertoire de travail est propre (stage vide). -
Maintenant je peux aller vers une nouvelle branche ou une existante avant d’insérer les modifications effectuées :
git branch manouvellebranchegit checkout manouvellebranche* manouvellebranchemastergit stash applyGit reset
- Git reset permet d’annuler des modifications de trois manières différentes :
soft,mixedethard

Supprimer le dernier commit
- D’abord, regardez les logs et donc le dernier commit effectué et son identifiant :
ca83a6dff817ec66f443420071545390a954664949 Author: contact<contactit[.]yarka(at)slmail.me> Date: Mon Mar 19 21:52:11 2022 -0700-
Notez l’identifiant :
ca83a6dff817ec66f443420071545390a954664949si vous devez l’assigner à une autre branche après l’avoir supprimé. -
Maintenant je peux supprimer le dernier commit avec la commande :
git reset --hard HEAD^Authentification Github
Github repose sur l’authentification avec SSH, donc une paire de clés.
Générer une paire de clés SSH
ssh-keygen -t ed25519 Generating public/private ed25519 key pair.Enter file in which to save the key (/home/contact/.ssh/id_ed25519):Created directory '/home/contact/.ssh'.Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/contact/.ssh/id_ed25519Your public key has been saved in /home/contact/.ssh/id_ed25519.pubThe key fingerprint is:SHA256:myhash contact@mydomainThe key's randomart image is:+--[ED25519 256]--+|%@+. ||EBCVB. ||+=Bo. ||+.o* . ||oo..o . S S ||=+oo o ||B++ o . . ||+=.. o . ||o. . . |+----[SHA256]-----+Récupérer la clé publique
cat ~/.ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAKC91uWop9DhfNh23i6u0yUlhEkGv0IOQKzhU5ltKBkAG contact@contactit.frAjouter la clé à GitHub
Allez dans
Settings > SSH and GPG keys, dans la section title mettez un nom quelconque et dans la section key collez votre clé publique, puis validez avecAdd SSH key.
Résumé de Git/Github
