Comprendre Git et le pratiquer avec les outils suivants :
Pourquoi aurait-on besoin de Git ?
Les états du système de fichiers
Généralement, les diapos seront construites avec 3 onglets permettant de faire le lien avec les outils suivants :
Un logo est présent sur chaque diapo pour rappeler de quel mode il s’agit.
sudo apt-get install git
Important
Nous ne parlerons pas de l’interface graphique Git-Gui directement installée au moment du téléchargement de Git.
D’abord installer R :
Puis RStudio :
Ces commandes doivent être invoquées avec git. Par exemple :
Important
git commit -m « Ajouter des variables d’ajustement »
add/stage : Place un fichier dans la zone index/stage
rm : Supprime un fichier (du répertoire de travail ainsi que de la zone d’indexation)
init : Créer un nouveau dépôt Git vide
clone : Créer une copie locale d’un dépôt distant
fork : Créer une réplique privée du dépôt d’un autre utilisateur
commit : enregistre les modifications dans le dépôt local
status : fournit un instantané de l’état actuel du dépôt
log : Consulter l’historique des modifications d’un dépôt Git
checkout : Passer d’une branche à l’autre ou restaurer les fichiers de notre répertoire de travail à l’état où ils se trouvaient dans une branche ou un commit spécifique
pull/push : traiter avec un dépôt distant
Prérequis : disposer d’un dossier dans lequel on peut écrire.
Pour un dossier vide, on crée un dossier “mon_projet” :
Pour un dossier contenant déjà des fichiers, on se place dans le dossier :
Prérequis : travailler dans un projet RStudio (Documentation RStudio).
Créer un projet
Ouvrir un projet existant
Ligne de commande
Initialiser un dépôt Git “local” pour suivre les fichiers du dossier “mon_projet” (nous verrons une autre méthode plus pragmatique) :
Un dossier .git
est créé dans mon_projet. C’est là que Git stocke les informations dont il a besoin.
Consulter son contenu dans un terminal
Ne pas essayer d’éditer les fichiers du dossier .git
.
RStudio
Lors de la création d’un projet :
Ou lancer la commande git init
dans le terminal.
Après actualisation de RStudio, Git est désormais intégré à RStudio.
Ne pas essayer d’éditer les fichiers du dossier .git
.
VS Code
Dans VS Code, sur le dossier à suivre :
Un dossier .git
est créé, c’est là que Git stocke les informations dont il a besoin.
Contrôler en ouvrant un terminal et en vérifiant la présence d’un dossier .git
.
Ne pas essayer d’éditer les fichiers du dossier .git
.
Création d’un dépôt Git local
.git
a été crééL’onglet Git de RStudio vous permet de connaître l’état du dépôt rattaché à votre projet :
On voit dans l’interface que le fichier .gitignore
n’est pas encore suivi par Git : icône orange avec un “?
” et état “untracked”.
L’outil “Source Control” permet de connaître l’état du dépôt rattaché au dossier :
On voit donc que:
.gitignore
Le fichier .gitignore
permet de préciser quels fichiers et dossiers doivent être ignorés par Git.
Pour cela, on utilise des modèles (ou patterns) et des noms de fichiers et dossiers explicites :
*.txt
*.back
ce_fichier_a_ignorer.data
/logs/
temp/
.gitignore
en ligne de commande :Avec VS Code il faut créer un fichier .gitignore
à la racine de votre projet.
Il est possible de créer un fichier .gitignore dans les sous-dossiers
Sur RStudio, le .gitignore
est automatiquement créé au moment de l’initialisation de Git dans le projet. Par défaut il contient les fichiers suivants :
.Rproj.user
.Rhistory
.RData
.Ruserdata
Un commit permet :
Chaque “commit” dispose d’un identifiant unique, géré par Git, et de métadonnées associées (date, auteur, message…).
Les fichiers des dossiers peuvent être dans quatre états :
.git
Pour créer un commit, il faut commencer par avoir quelque chose à commiter.
On va donc créer un fichier vide ou travailler avec un fichier déjà existant :
Ensuite, il faut désigner les fichiers qui vont faire l’objet du commit :
# Pour prendre en compte tous les fichiers présents qui ont été modifiés
git add .
# Pour ne prendre en compte que le fichier mon_fichier.txt
git add mon_fichier.txt
Finalement, on déclenche l’opération de commit, avec un message pertinent :
À ce stade, le fichier mon_fichier.txt est enregistré dans les fichiers suivis par Git.
Pour créer un commit, cliquer sur le bouton “Commit” (ou Ctrl+Alt+M
) :
Une fenêtre s’ouvre permettant de voir les fichiers non suivis ou les fichiers avec des modifications :
Pour créer un commit contenant le fichier .gitignore
:
.gitignore
.gitignore
au dépôtPour créer un commit, il faut commencer par avoir quelque chose à “commiter”. On va donc créer un fichier
Constatez que le fichier est proposé en vert (add) dans “Source Control”
Finalement, on déclenche l’opération de commit (2), après avoir saisi un message d’accompagnement (1) puis “Ctrl Enter” ou on clique sur la case à cocher dans l’onglet “Source control”
À ce stade, le fichier mon_fichier.txt
est enregistré dans les fichiers suivis par Git.
Si une erreur survient avec le message suivant :
C’est que votre identité n’est pas connue de Git (les commit sont signés par des auteurs). Utilisez alors les deux commandes suivantes pour configurer Git (à faire une fois) :
On peut ensuite relancer le commit.
Ajout d’un fichier de code au dépôt
.R
.git status
ou via l’interface de votre IDE.Ignorer les fichiers avec l’extension .data
.gitignore
..data
.git status
ou via l’interface de votre IDE.test.data
avec un contenu quelconque et constater qu’il n’est pas proposé au suiviBonnes pratiques pour les commits
Mauvaises pratiques pour les commits
Messages de commit :
Update code.r
Petit rajout
Code réparé
Pratique
Prendre le temps de faire quelques commits supplémentaires en ajoutant/modifiant des fichiers sur le dépôt.
Pour voir l’historique des commits sur un dépôt, on peut utiliser les commandes suivantes :
On peut afficher les modifications du commit correspondant à un hash particulier
Git permet aussi aussi de suivre les suppressions et renommages de fichiers :
# Déplacer un fichier
git mv fichier.txt new_name.txt
git commit -m "Mon message de commit"
# Supprimer un fichier
git rm fichier.txt new_name.txt
git commit -m "Mon message de commit"
Pour annuler les modifications non commitées sur un fichier, on peut utiliser la commande suivante :
Dons l’onglet Git de RStudio, il y a un bouton “History”.
Ce bouton permet d’accéder à l’historique du dépôt (tous les commits effectués dessus) :
En sélectionnant un commit, on peut voir les informations qui le concernent :
Il est aussi possible de voir un fichier tel qu’il était suite à un commit particulier :
On peut alors parcourir un “instantané” du fichier :
Si l’on souhaite récupérer cet instantané, on peut l’enregistrer comme fichier :
Pour voir l’historique des commits sur un dépôt
Nécessite d’avoir l’extension “Git history” installée
En cliquant sur une ligne de l’historique on peut accéder aux détails du commit
Git dans VS Code permet aussi aussi de suivre les suppressions et renommages de fichiers
Dans cette section :
Modifier un fichier sans faire de commit sur les modifications mais penser à sauvegarder le fichier :
On peut aller dans l’interface de commit pour voir les modifications :
Si l’on souhaite supprimer toutes les modifications non commitées, on peut faire un clic droit sur le fichier concerné et les annuler avec “revert” :
Attention
Attention, c’est tout ce qui a été modifié dans le fichier depuis le dernier commit qui sera supprimé :
Modifier un fichier sans faire de commit sur les modifications mais penser à sauvegarder le fichier :
On peut aller dans l’interface de commit pour voir les modifications :
Si l’on souhaite supprimer toutes les modifications non commitées, on peut cliquer sur la flèche “discard changes” pour le fichier concerné :
Attention, c’est tout ce qui a été modifié dans le fichier depuis le dernier commit qui sera supprimé :
Ajouter les nouvelles modifications au commit précédent en passant par le terminal puis
Constatez qu’il n’y a pas de nouveau commit dans la liste dans l’historique.
Utiliser le menu déroulant du bouton Commit.
Annuler une modification
Tag en anglais
Fonctionnalité de Git : étiqueter un certain état dans l’historique comme important.
Exemple
On souhaite marquer les états de publication (v1.0 et ainsi de suite)
Deux types principaux d’étiquettes :
Attention
L’interface RStudio ne permet pas de créer d’étiquette, il faut passer par la ligne de commandes.
Lister les étiquettes existantes (par ordre alphabétique) :
v0.1
v1.3
Rechercher les étiquettes correspondant à un motif particulier
v1.3
Pour créer une étiquette légère :
Pour la visualiser :
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
Pour créer une étiquette annotée :
Pour la visualiser :
tag v1.4
Tagger: Ben Straub <ben@straub.cc>
Date: Sat May 3 20:19:12 2014 -0700
ma version 1.4
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
Pour voir les versions de fichiers qu’une étiquette pointe.
Important
Votre dépôt sera dans un état « HEAD détachée ».
Si vous modifiez puis créez un commit, l’étiquette restera identique, mais votre nouveau commit n’appartiendra à aucune branche et sera non joignable, à part avec son empreinte de commit exacte.
Lister les étiquettes existantes : dans le menu, cliquer sur Basculer sur…
… et choisir parmi les étiquettes proposées
Rechercher les étiquettes correspondant à un motif particulier
Important
VS Code ne propose que des étiquettes annotées. Il faut utiliser la ligne de commande.
Tip
On peut cependant ne saisir que le nom de l’étiquette et taper enter pour les autres informations demandées et ainsi créer une étiquette légère.
Pour créer une étiquette annotée : dans le menu, cliquer sur Étiquettes > Créer une étiquette.
Important
VS Code ne propose pas de visualiser les données d’une étiquette. Il faut utiliser la ligne de commande.
Dans le menu, cliquer sur Étiquettes > Supprimer l’étiquette.
Pour se positionner sur une étiquette particulière, après avoir cliqué dans le menu sur Basculer sur…, choisir l’étiquette.
L’extension GitLens disponible dans VS Code propose un accès direct aux fonctionnalités de création d’étiquette et à la liste des étiquettes disponibles
Utiliser l’étiquettage
Utilisation du package saperlipopette
, 12 exercices pour prendre confiance avec les commandes de Git :
Formation Git / GitLab − Session 1 : initiation à Git
Comment utiliser Git ?