Introduction à Git et GitHub
final.Rfinal_extra_analysis.Rfinal_modif_denis.R et final_modif_morgane.RGit est un système de contrôle de version (SVC) libre. Il relie et unifie les différentes versions d’un même projet entre elles.
Un système de contrôle de version (SVC) permet de :
Git permet de tracer l’historique des fichiers d’un projet en le représentant sous forme de graphe.
Il utilise un modèle distribué léger et performant.
En ligne de commande : terminal unix, mac, wsl2 sous windows, …

Avec des outils graphiques ou dans des IDE/environnements de développement : RStudio, VSCode, gitkraken, …

Commencez par installer Git sur votre machine :
https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
Chaque modification réalisée sur git est associée à la personne qui la réalise. Il faut donc configurer son nom d’utilisateur et son mail (pour se rattacher à son compte GitHub)).
On utilise le package usethis :
Il est vivement conseillé d’utiliser un Personnal Access token (PAT) pour accéder à ses remotes, pour éviter de laisser trainer son mot de passe Git (avec 2FA bien comme il faut).
On suit la méthode proposée par le package usethis :
https://usethis.r-lib.org/articles/git-credentials.html#get-a-personal-access-token-pat
Si on est fan de terminal, on peut tout faire à la main.
Y’a plus qu’à se lancer !
Sauvegarder les modifications en local :
git add (ou ☑) pour sélectionner les modifications à sauvergit commit pour valider la nouvelle version du projetPour ajouter des changements en vue de la prochaine validation (prochain commit).

Le commit :
est associé à un message qui résume son intention
garde en mémoire chaque changement de ligne
possède un auteur et un identifiant unique (le hash)
connait le hash du commit parent
Un “commit” est une validation, qui représente une image de votre projet à un instant donné.
C’est un état qui va être enregistré dans l’historique et qui sera donc atteignable dans le futur.
On peut explorer toutes nos modifications :
git history ou git loggit diffSauvegarder les modifications en remote :
git push pour mettre à jour le remote avec notre localgit pull pour récupérer les modifications existantesLe repository remote est hébergé en ligne (GitHub, GitLab, Gitea), on peut le cloner sur une autre machine!
La commande git push est utilisée pour uploader des données locales vers un répertoire distant, par exemple, un projet partagé sur github.
Il faut définir un remote(dépôt distant), par exemple un dépôt github :

git add pour lister les fichiers à commitgit commit pour sauvegarder un état donnégit push pour synchroniser ces changements avec un dépôt distantLa commande
git pullest utilisée pour mettre à jour des données locales depuis un répertoire distant, par exemple, un projet partagé sur github.
On merge la branche main du dépôt origine avec notre branche courante de travail.
Un git pull est équivalent à un git fetch + git merge. L’option un est jugée moins sûre que l’option 2 mais plus simple pour démarrer sur des projets avec des workflow simples.
Une nouvelle branche permet de :
créer plusieurs versions à partir d’une même base
intégrer des corrections une fois validée/terminée
collaborer efficacement
et on y a encore accès partout
On duplique une base en une nouvelle branche. Les prochains commit sont spécifiques à la branch active (git show HEAD).
atlassian tutorial
git branch <new-branch> pour créer une branchegit switch <new-branch> pour la définir comme activegit checkout <new-branch> pour la définir comme activegit push -–set-upstream pour ajouter la branch au remoteLa commande git branch sert à créer des branches en parallèle de la branche principale main ou master.
Utile lorsque l’on collabore à plusieurs, pour créer des branches de fonctionnalités (feature branch), dans de nombreux workflow…
Voir ici pour une présentation de workflows possibles.
La commande git switch permet de changer de branche. La commande git checkout permet entre autres de changer de branche.
On intègre les commit d’une branche dans une autre (git merge).
atlassian tutorial
git merge <my_branch> ou git rebase <master> <my_branch> intègre my_branch dans la branche activegit pull est un merge entre le remote et le localLorsque l’on souhaite fusionner deux branches, on peut réaliser deux types d’opérations :
git mergegit rebaseCes deux opérations diffèrent par la manière de fusionner les historiques (merge préserve l’historique complet, quand rebase réécrit l’historique).
En collaboration, on peut créer un pull request de notre branch sur un repo remote pour demander à intégrer nos commit dans la master branch.
Il est possible d’écrire un fichier .gitignore pour ne pas traquer certains fichiers:
Il est facile de glisser des ‘secrets’ dans ses scripts et que ceux-ci se retrouvent dans un historique git :
Attention aux fichiers que vous enregistrez dans vos commits (comme le .Rhistory). Soyez vigilants.
add, commit, push et pull.Les github actions sont des outils de CI/CD (continuous integration / continuous delivery) qui permettent l’automatisation de certaines tâches en réponse à un évenement (un push, un commit, sur une branche, …).
Quarto
Quarto est un outil de programmation “littéraire” de type notebook : plus à propos de Quarto lors du dernier cours.
Github permet l’hébergement de sites web statiques par le biais des Github Pages. Ceci rend possible une intégration forte entre votre code et le déploiement d’un site. C’est très pratique pour héberger la documentation d’un package, un site personnel, ou tout site statique.
R avancé et introduction à Git | Introduction à Git et GitHub