9  Résumé de la partie Git

En cours

9.1 Installation de git

  • https://www.git-scm.com/download/win
  • Laissez les options telles quelles en passant systématiquement (10 étapes)
  • Verifier l’installation en allant dans un dossier => faites un clic droit et vérifier que les items Open Git GUI here et Open Git Bash here sont bien présent.

9.2 Configuration

Dans une invite de commande (windows, bash installée avec git…)

  • Indiquer votre adresse mail
git config --global user.email EMAIL-ADRESSE
  • Indiquer votre prénom et votre nom
git config --global user.name "PRENOM et/NOM"

9.3 Connection à forge (via RStudio)

9.3.1 Token

  • Installation des packages usethis et credentials

Console R:

install.packages("usethis")
install.packages("gitcreds")
library(usethis)
library(gitcreds)

GITHUB

Console R:

  • Vous enverra directement sur la page de création des tokens
usethis::create_github_token()
  • Générer le token dans github
  • Copier le token

Attention la durée de vie du token est de 30 jours, vous pouvez l’augmenter jusqu’à un an.

  • Ajouter le token

Par défaut RStudio affectera le token à Github:

gitcreds_set()

Ou

gitcreds_set(url="https://github.com")

Coller le token et appuyer sur enter

  • Test de la connection: dans le terminal exécuter:
git clone gitcreds_set(url="https://github.com")

GITLAB

Dans gitlab:

  • Aller sur son avatar Edit profile Acces token
  • Add new token: sélectionner read repository et write repository
  • Copier le token

Attention la durée de vie du token est de 30 jours, vous pouvez l’augmenter jusqu’à un an.

  • Ajouter le token
gitcreds_set(url="https://gitlab.com")

Coller le token et appuyer sur enter

  • Test de la connection: dans le terminal exécuter:
git clone gitcreds_set(url="https://github.com")

9.3.2 Clé SSH

  • Création de la clé SSH dans Rstudio1:
    • Tools Global Options Git/SVN Create SSH Key
    • Views ssh key => Copier la clé
  • Ajouter la clé dans Github:
    • Aller dans les settings de votre profile SSH & GPH Keys New ssh key coller la clé add ssh key
  • Création de la clé dans Gitlab:
    • Edit profile SSH keys add new key coller la clé (vous pouver modifier la date d’expiration) => add key
  • Facultatif2

Dans le terminal:

eval $(ssh-agent -s)

Puis

ssh-add ~/.ssh/id_ed25519

Si message de ce type:

The authenticity of host 'github.com (140.82.121.4)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvXXXXXXX\(*_*)/XXXXXXXXXr4UvCOqU.
This key is not known by any other names.

Valider avec yes

  • Test de la connection. Dans le terminal exécuter:

Github

git@github.com:mthevenin/test_connection_formation.git

Gitlab

git@gitlab.com:mthevenin/test_connection_formation.git

9.4 Les principales commandes git

A utiliser dans un terminal, de préférence le bash

  • En local, démarrer un dépôt git
git init
  • Verifier le statut des fichiers
git status
  • Staged: Ajouter des fichiers ayant fait l’objet d’une modification depuis la version précédente
git add nom_fichier1 nom_fichier2

Tous les fichiers modifiés entre deux versions

git add . 
  • Commit: Figer une version des fichiers ayant fait l’objet d’un git add
git commit -m "Titre de la version"
  • Lister l’historique
Version longue
git log
Version résumée
git log --oneline
  • Contenu d’un commit
git show numero_commit
  • Push: Transférer les modifications entre deux commits du répertoire local de travail sur le dépôt distant (remote)
git push
  • Pull: Récupération des modifications apportées au dépôt distant vers le répertoire local de travail
git pull
  • Créer une branche secondaire
git branch nom_branche
  • Changer de branche
git checkout nom_branche
  • Fusionner des branches (répertoire local)

A partir de la branche principale (main/master)

git merge nom_branche_secondaire
main versus master

Depuis 2021, les plateformes git se sont engagées à adopter le nom main pour la branche principale.
Avec Gitlab cependant, lorsque le dépôt distant est créé avec un template, le nom de la branche principale est resté master.

Le logiciel git a conservé le nom master lorsqu’on démarre une instance git dans un répertoire local. Il est possible de le changer avec la commande suivante: git branch -m nouveau_nom

  • pull request (demande de fusion dans le dépôt distant)

A partir d’une branche secondaire:

git push origin nom_branche_secondaire

Valider ou non sur gitlab/github la demande de fusion.

  • git revert

Par exemple pour un fichier dont la suppression a fait l’objet d’un commit explicite

git revert numéro_commit

9.5 Exemple d’opérations de versionnage

Pour les animations, on a utilisé l’interface ungit.

  • On se trouve dans le répertoire demi_git

  • On ouvre le terminal bash

  • On démarre le versionnage: git init

  • On génère le fichier vide texte.txt: touch texte.txt

  • On ajoute du texte

  • On ajoute le nouveau fichier à cette version (stage): git add texte.txt

  • On fige la version avec un commit: git commit -m "premier commit: add texte.txt"

  • On créé le fichier prog.r et on ajoute quelques ligne de codes: touch prog.r
  • On modifie à nouveau le fichier texte.txt
  • On versionne ces deux modifications:
    • git add .
    • git commit -m "modif texte.txt add prog.r"

  • On supprime le fichier texte.txt: rm texte.txt
  • On versionne cette suppression:
    • git add .
    • git commit -m "delete texte.txt"
  • On fait des modifications sur le fichier prog.r et on les versionne:
    • git add .
    • git commit -m "modif prog.r"
  • On veut récupérer le fichier supprimé (texte.txt).
    • On récupère le numéro du commit liée à la suppression du fichier.
      • Directement dans un interface graphique.
      • En affichant l’historique des commit: git log cd17dba55648a08eaf9131cca862646002c0e986
    • On va revenir en arrière sur la suppression avec git revert numero_commit:
      • git revert cd17dba55648a08eaf9131cca862646002c0e9863


  1. On peut générer une clé avec une commande git↩︎

  2. conseillé si ajout d’une passphrase lors de la création de la clé↩︎

  3. Lors du commit généré automatiquement, un horrible éditeur de texte va s’ouvrir. Pour en sortir :x↩︎