Table des matières

La page outils

Outils - Démarrer avec Git et Github

Rédacteur(s) : Philippe Mariano

[Mise à jour le 19/8/2023]

config init add commit revert status log
branch checkout merge remote push pull

1. Introduction

1.1 La gestion de version

1.2 Git

2. Installation et paramétrage de Git

2.1 Installation

git --version 
# Exemple de résultat : "git version 2.25.1.windows.1" indique que git est correctement installé.

Git est packagé pour la plupart des distributions Linux, on vérifiera la version avant de faire une mise à jour avec les commandes suivantes.
*.bash
git --version
# Exemple de résultat sur un Raspberry Pi : git version 2.20.1
sudo apt install git 
# Exemple de résultat : git est déjà la version la plus récente (1:2.20.1-2+deb10u1).

2.2 Paramétrages

git config --global user.name "Prénom Nom"
git config --global user.email "mon_mail"
Pour connaître la configuration d'un dépôt et notamment le nom et le mail de celui qui signe les commits par défaut, entrer la commande : git config -l.

3. Git en ligne de commandes : les bases

add commit revert config init log status
Un dépôt Git se crée dans un répertoire de travail. L'effet obtenu n'est pas visible, .git est un répertoire caché.

testgit dans VSCode

3.1 Créer un répertoire de travail

Créer un répertoire nom_rep et placer un fichier nom_fichier.ext.

Exemple : le fichier index.html est situé dans le répertoire testgit

3.2 Se placer dans le répertoire de travail avec la console Git

Exemple

3.3 Initier un dépôt Git dans le répertoire de travail

*.bash
git init

Exemple : dépôt Git vide !

3.4 Connaître le statut des fichiers dans Git

*.bash
git status

Exemple : avant d'avoir ajouté le fichier index.html à Git (les informations ci-dessous sont précisées plus loin)

3.5 Faire un enregistrement du projet

*.bash
git add nomfichiers  
git commit -m "texte explicatif"

Exemple : Après avoir écrit du code dans un fichier index.html, on l'ajoute à la zone de transit puis on le valide.

Variantes de add et de commit


*.bash
# Pour ajouter tous les fichiers du répertoire de travail dans la zone d'index
git add . 
# -a demande à Git de mettre à jour les fichiers existants 
# dans sa zone de transit(index)
git commit -am "texte explicatif"
# pour faire un commit sans être l'auteur du dépôt
git commit -am "texte explicatif" --author "nom<adresse_mail>"
# Pour modifier le message du dernier commit faire
git commit --amend -m "Nouveautexte explicatif"
# Pour modifier le nom de l'auteur du dernier commit
git commit --amend --author "nom<adresse_mail>"

Résumé

Git surveille les fichiers et non les dossiers.

3.6 Afficher l'historique des modifications

*.bash
git log # affiche tous les commits
git log -2 # limite l'affichage aux deux derniers commits
git log -p -2 # comme ci-dessus et affiche les modifications

Exemple : deux commits on été réalisés sur le fichier index, dans l'ordre 29e66ab puis 12fe1e2.

3.7 Revenir sur un commit

Il est possible de se positionner sur un commit antérieur pour par exemple trouver la source d'une erreur apparue dans le dernier commit.

*.bash
git checkout SHAduCommit #  SHA (acronyme de Secure Hash Algorithm) est associé à plusieurs fonctions de hachage
                         #  cryptographiques. Unique, il sert d'identifiant au commit.

Exemple : étant sur le dernier commit, on se positionne sur le premier.

Pour revenir sur le dernier commit, entrer : git checkout master (notion vue plus loin)

3.8 Annuler, modifier un commit

Il est possible de changer d'avis et d'annuler un commit par :

*.bash
git revert SHAduCommit # annulation du commit ayant pour identifiant SHAduCommit
git revert HEAD # annulation du dernier commit
*.bash
git reset --hard # à utiliser avec précaution

3.9 Travailler avec des branches

Une branche est une copie du projet initial. Elle permet de diverger de la ligne principale (master) pour continuer à travailler sans impacter cette ligne (faire des essais, travailler à plusieurs, etc.).

branche master de testgit dans VSCode

branch checkout merge
*.bash
git branch nombranche # Exemple : git branch backgroundcolor
*.bash
git branch

Exemple

La branche dans laquelle on se trouve est identifiée par un asterisque.
*.bash
git checkout nombranch # Exemple : git checkout backgroundcolor permet de passer sur la branche backgroundcolor

Exemple

*.bash
git checkout master # 1
git merge nombranche # 2
git branch -d nombranche # 3

branche backgroundcolor de testgitdans VSCode Exemple : un répertoire style, contenant un fichier style.css a été ajouté sur la branche backgroundcolor du projet testgit.

  1. On se place sur master et on fusionne la branche backgroundcolor avec la branche master.
    *.bash
    git checkout master
    git merge backgroundcolor

  2. On supprime la branche backgroundcolor
*.bash
git branch -d backgroundcolor

3.10 Supprimer un dépôt git

Pour supprimer le dépôt git du répertoire de travail, il suffit de supprimer le répertoire caché .git. Sous W10, celui-ci est affiché en cochant Eléments masqués dans le menu Affichage de l'explorateur de fichiers.


4. Plus loin avec Git

4.1 Retrouver le nom de l'auteur d'une modification

blame show
git blame a pour fonction générale d'afficher les métadonnées d'auteur associées à des lignes de commit spécifiques dans un fichier.
*.bash
git blame nom_fichier

Exemple : dans le fichier index.html toutes les modifications ont été faites par Philippe Mariano

git show est un utilitaire de ligne de commande utilisé pour afficher des détails supplémentaires sur les objets Git, comme les blobs, les arborescences, les tags et les commits.
*.bash
git show

Exemple : on voit ci-dessous qu'un fichier style/style.css a été ajouté au projet et son contenu

4.2 Ignorer des fichiers

Créer un fichier .gitignore et y placer le nom de tous les fichiers qui ne doivent pas être indexés. Voir la vidéo sur OpenClassrooms.

4.3 Eviter des commits superflus

Voir la vidéo sur OpenClassrooms.


5. Collaboration sur Github

GitHub est un service web d'hébergement et de gestion de développement de logiciels, utilisant le logiciel de gestion de versions Git.
clone remote push pull

5.1 Présentation

L'initiateur d'un projet souhaite faire participer des collaborateurs.

5.2 Créer un compte

5.3 Travail préalable de l'initiateur du projet

5.3.1 Créer un dépôt distant public sur GitHub

Exemple

Cocher “Initialize this repository with a README” crée un premier fichier dans le dépôt. Cette option est à cocher UNIQUEMENT dans le cas où le projet n'est pas dans un dépôt local (sur sa machine).

Résultat

5.3.2 Associer un dépôt distant avec un dépôt local
Il s'agit de créer un pont entre le dépôt distant (sur github) et le dépôt local (sur son poste) . Pour cela, on exécute la commande ci-dessous.
*.bash
git remote add origin [url_du_dépôt_créé_par_github] # Indique à Git d'ajouter le dépôt 
                                                     # distant et de lui associer l'alias "origin"
                                                     # origin est une convention de Git
L'“url_du_dépôt_créé_par_github” se trouve en cliquant sur le bouton sur la page du dépôt.

Exemples

*.bash
git remote add origin https://github.com/WebGE/test1.git # cette commande entrée dans le répertoire test1
                                                         # relie test1 local à test1 sur GitHub
git remote permet de vérifier l'association des dépôts distants avec son projet.
*.bash
git remote # cette commande permet de vérifier l'association

5.3.3 Transférer l'intégralité de son dépôt local sur un dépôt distant

Exemple

*.bash
git push -u origin master

5.4 Travail préalable du collaborateur : cloner un dépôt distant

Il est possible de télécharger l'intégralité d'un dépôt distant sur sa machine en utilisant la commande clone de Git.

Pour cela :

  1. Créer un répertoire (sur sa machine) et initier un dépôt Git local avec git init. voir (§3.3)
  2. Dans le dépôt local, cloner le dépôt distant en entrant :
    *.bash
    git clone [url_du_dépot_créé_par_github]
L'“url_du_dépot_créé_par_github” se trouve en cliquant sur le bouton

Exemple

5.5 Faire des sauvegardes, mettre à jour avec push et pull

5.5.1 Accéder à un dépôt distant
La commande git remote permet de créer, d'afficher et de supprimer des connexions avec d'autres dépôts.

*.bash
git remote # Permet de répertorier les connexions distantes avec d'autres dépôts.
git remote -v # Idem ci-dessus mais inclut l'URL de chaque connexion.
git remote add <name> <url> # Permet de créer une connexion avec un dépôt distant.
git remote rm <name> # Permet de supprimer la connexion avec le dépôt distant nommé <nom>.

Exemple

*.bash
git remote add origin https://github.com/WebGE/test1.git # Création d'une connexion vers un dépôt sur Github
git remote add local 192.168.1.6 # Création d'une connexion avec un serveur git sur un NAS local
# Le dépôt local est connectée à deux dépôts distants

Exemple

5.5.2 Mettre à jour son dépôt local à partir d'un dépôt distant.
La commande git fetch télécharge des commits, des fichiers et des refs d'un dépôt distant vers le dépôt local. Le fetch est l'opération à réaliser lorsque l'on souhaite voir ce sur quoi tout le monde travaille.
La commande git pull est utilisée pour faire un fetch du contenu d'un dépôt distant pour le télécharger, puis pour mettre à jour immédiatement le dépôt local qui correspond à ce contenu. La commande git pull est en fait la combinaison de deux autres commandes, git fetch suivie de git merge.

Exemple

*.bash
git pull origin master

A ce stade les personnes ayant téléchargé le dépôt peuvent le modifier en local, mais ne sont pas encore autorisées à collaborer (modifier le dépôt original sur github). Pour cela, il faut les inviter et leur accorder des droits.
5.5.3 Transférer ses modifications vers le dépôt distant

Une fois que des modifications ont été faites, ajoutées à l'index et qu'un commit à été réalisé, on peut “pousser” les modifications vers le dépôt distant si l'initiateur du projet nous a accordé les droits d'accès(voir §5.6).

La commande git push est utilisée pour charger le contenu d'un dépôt local vers un dépôt distant.
*.bash
git push origin master # pour transférer le contenu du dépôt local (origin) vers la branche Master (Github)
git push origin <autrebranche> # origin <autrebranche> -> <autrebranche> distante

5.6 Inviter des collaborateurs et attribuer des droits

  1. Sélectionner Setting sur la page du dépôt.
  2. Sélectionner
  3. Inviter un collaborateur
  4. Entrer le nom du collaborateur
  5. La personne sélectionnée apparaît dans la liste des collaborateurs. Elle dispose maintenant du droit d'écriture sur le dossier distant (git push)

5.7 Proposer des modifications (pull requests)

Pour proposer des modifications sur GitHub, il faut faire des pull requests.

  1. Faire un fork (copie du dépôt d'un projet existant sur GitHub vers son compte Github)
  2. Cloner le projet vers sa machine
  3. Consulter les conditions pour réaliser une pull request dans le readme du projet
  4. Faire une modification et la pousser sur GitHub
  5. Faire une pull request

6. En résumé