Git & GitHub

Objectif

L’objectif de cet exercice est de vous familiariser avec l’utilisation de et .


Préambule

Avant toute chose, vérifiez que vous avez bien configuré git tel que mentionné ici.

## Installation de 'gert' ----
install.packages("gert")

## Configuration de git ----
gert::git_config_global()

##   name                          value               level 
## 1 user.name                     Jane Doe            global
## 2 user.email                    jane.doe@mail.me    global
## 3 init.defaultbranch            main                global


Travailler seul

  Vous allez envoyer le research compendium créé à l’Exercice 1 sur votre compte GitHub.

GitHub First vs. GitHub Last

Cette approche est appelée GitHub Last : on crée d’abord le projet en local, puis on crée le dépôt distant. Pour plus d’information : GitHub First et GitHub Last.


Initialiser git

Dans un premier temps, vous devez initialiser git dans votre projet. Entrez la ligne de commande suivante dans le Terminal de RStudio :

## Initialisation de git -----
git init

  Redémarrez RStudio afin d’activer le panneau Git dans l’interface.

Vérifiez l’état de votre projet :

## Statut des fichiers vu par git -----
git status

L’ensemble des fichiers de votre compendium ne sont pas encore suivis par git (untracked).


Ajout d’un .gitignore

Certains fichiers sont inutiles à versionner, voire dangereux (mots de passe, etc.). D’autres peuvent être à l’origine de conflits inutiles. C’est le cas notamment du fichier .Rproj.

Nous allons ajouter un .gitignore à notre compendium. Pour cela, nous allons utiliser la fonction add_to_gitignore() du package rcompendium qui propose un template de .gitignore pour les projets sous .

## Ajout d'un .gitignore pour les projets R -----
rcompendium::add_to_gitignore()


Première version

Il est temps de créer une première version. Cela se fera en deux temps :

  1. sélection des fichiers avec git add
  2. enregistrement de la version avec git commit
## Sélection de tous les fichiers ----
git add -A

## Statut des fichiers vu par git -----
git status

## Création d'une nouvelle version ----
git commit -m "init repo"

Vérifiez le status des fichiers :

## Statut des fichiers vu par git -----
git status

Affichez l’historique :

## Historique des versions -----
git log


Création du dépôt GitHub

Maintenant, nous souhaitons envoyer notre projet sur GitHub. Rendez-vous sur GitHub et créez un nouveau dépôt VIDE : donnez juste un nom de dépôt et n’ajoutez aucun fichier supplémentaire (pas de licence, .gitignore, README). La page du dépôt créé contient une série d’instructions correspondant à trois cas de figure. Nous allons suivre la section Push an existing repository from the command line.

Dans le terminal de RStudio :

## Ajout du chemin vers le dépôt distant ----
git remote add origin git@github.com:your_account/your_repo.git

## Envoi du dépôt local vers le dépôt distant ----
git push -u origin main

Félicitation ! Votre research compendium est maintenant sur GitHub.

GitHub API

Une alternative est d’utiliser l’API GitHub via la fonction use_github() du package usethis. Cette fonction va créer le dépôt distant sur GitHub et envoyer votre dépôt local sur GitHub (git push).

## Création du dépôt public GitHub ----
usethis::use_github()

  Pour utiliser l’API GitHub, vous devez avoir sauvegardé localement votre GitHub Personal Access Token (PAT) tel quel indiqué ici.

Continuez à modifier vos fichiers, créez de nouvelles versions (git add et git commit) et envoyez-les sur GitHub (git push).


Collaborer

  Mettez-vous par groupe de 2-3 personnes et déterminez un leader parmis vous : vous allez collaborer sur son projet.

Sur GitHub, le leader va allez dans les Settings et ajoutez une personne de votre groupe comme collaborateur de votre projet.

  Mettez en oeuvre 3 solutions pour collaborer sur le même projet. En fonction de votre statut dans le projet et de votre objectif :

  • Utilisez les Issues pour suggérer au leader des améliorations
  • Si vous êtes collaborateur, Clonez le dépôt, faites les modifications et envoyez-les
  • Si vous ne l’êtes pas, Forkez, Clonez, et essayez la Pull Request