gitgit >= 2.23Nous utiliserons les commandes restore et switch introduites dans la version 2.23 de git, ce sont des alternatives aux commandes historiques checkout et reset qui sont surchargées et causent trop de confusions.
bullseye ou si vous utilisez homebrew sur macOS, installez simplement le paquet git.buster, la version de git distribuée est 2.20. Vous pouvez installer une version plus récente de git depuis les backports :
Ajoutez la ligne suivante dans un fichier nommé /etc/apt/sources.list.d/backport.list :
deb https://deb.debian.org/debian buster-backports mainTéléchargez les informations des nouveaux paquets, installez git en spécifiant que vous voulez qu'il soit téléchargé depuis le dépôt buster-backports :
# apt update
# apt install -t buster-backports gitVérifiez que la commande git --version retourne une version supérieure à 2.23.
tigDe nombreuses interfaces graphiques permettent de visualiser l'historique et l'état du dépôt.
Le paquet tig fournit une interface curses permettant une telle visualisation dans votre terminal.
tigLes commits contiennent le nom et l'adresse mail de la personne qui l'a crée (cette personne est appelée committer).
Pour que les commits vous identifient correctement comme étant l'auteur et/ou le committer, tapez les commandes suivantes :
$ git config --global user.name "<Prénom> <Nom>"
$ git config --global user.email "<adresse_mail>"Observez le résultat dans le fichier ~/.gitconfig.
git-test/ et initialisez-y un dépôt git.plop dont le contenu est la chaîne hop.plop à la staging area (index).plop en remplaçant la chaîne de caractères hop par hap.plop à la staging area (index).toto dont le contenu contient 4 lignes de votre choix.toto à la staging area (index).toto.toto à la staging area (index).toto.toto à la staging area (index).tig.toto et supprimez sa première ligne.toto.toto et modifiez sa 4e ligne.toto à la staging area.toto soit identique à celui du 3e commit.À faire si vous êtes en avance, sinon passez au prochain paragraphe et revenez-y plus tard.
Lisez la page du slide intitulée "Ne versionner que le source, ignorer les sous-produits".
Créez un répertoire nommé programmation/ dans votre répertoire de travail.
Créez-y un fichier de type "Hello world" nommé hello.c, et commitez-le.
Compilez-le et exécutez-le.
Que donne la commande
$ git statusCréez un fichier .gitgnore à la racine de votre répertoire de travail (worktree) de sorte à éviter de commiter par inadvertance le fichier compilé.
Que donne la commande
$ git statusSi les fichier compilés n'apparaissent plus, commitez le fichier .gitgnore.
Modifiez le fichier hello.c de sorte à ce qu'il fasse plutôt "Hello git".
Compilez-le et exécutez-le.
Commitez-le.
essaiessai votre branche courante).test.txt, ajoutez-le à la staging area et commitez.milieu-testtest.txt, ajoutez-le à la staging area et commitez..git/HEAD et des différents fichiers et sous-répertoires du répertoire .git/refs/git gère ses références (tags, branches, branche courante).master.plop, ajoutez-le à la staging area et commitez.essai dans la branche courante master.tigÀ faire si vous êtes en avance, sinon passez au prochain paragraphe et revenez-y plus tard.
Imaginez un DAG un peu complexe avec des tags à certains endroits, et amusez-vous à réaliser ce DAG comme le DAG des commits de votre dépôt avec les commandes add,commit,branch,switch,tag,merge.
Si vous ne voulez pas perdre de temps à créer du contenu à commiter mais vous concentrer sur la gestion du DAG, vous pouvez au choix :
dessiner directement votre DAG dans le simulateur learngitbranching
utiliser l'alias suivant qui crée un fichier avec un nom aléatoire et un contenu aléatoire puis l'ajoute dans la staging area :
$ alias Stage_un_truc='RND=${RANDOM};echo ${RND}>fichier_${RND};git add fichier_${RND}'
Ainsi, il suffit de taper la commande Stage_un_truc pour avoir quelque chose à commiter. De même, utilisez l'option -m de git commit pour mettre un message rapidement.
Mettez-vous sur une branche qui a de nombreux ancêtres, visez un commit particulier et essayez d'en faire le commit courant sans utiliser son hash, mais avec l'adressage relatif (cf slides).
Lorsque vous avez fini avec les exercices précédents, connectez-vous sur le salon mattermost sysadmin_git et écrivez "j'ai fini la partie solo".
Dès qu'un nombre suffisant d'étudiant·es a fini la partie solo, il·les créent un groupe avec un salon jitsi pour travailler ensemble sur un dépôt distant commun.
Voici quelques infos pour pouvoir cloner le dépôt distant commun:
la machine distante est un conteneur accessible via le nom de domaine yologit.netlib.re
les fingerprints des clefs publiques du serveur SSH de ce conteneur sont :
ECDSA : SHA256:9j1WU56gjFkSACA3zILrVv2EdTZ2Aphs2sxuas/P004 RSA : SHA256:UBSnfyQlOscdN6T3ftStt+ne6OL0fiqVA9h6+wVisVM ED25519 : SHA256:PYktqMJQNdLdc8IGCnlO4On6sCfQYR6X4hR1ANKN/9I
l'user qui héberge le dépôt distant sur ce conteneur s'appelle gituser,
votre clef publique SSH a été installée dans le fichier ~/.ssh/authorized_keys de l'user gituser de sorte que vous n'avez pas besoin de mot de passe pour vous connecter.
le nom du dépôt distant attribué à votre groupe vous sera donné par un enseignant.
Essayez de vous connecter par SSH sur la machine yologit.netlib.re en tant qu'user gituser. Vérifiez et validez le fingerprint. Vous serez ensuite interdit·e de vous connecter: c'est normal, le shell de l'user gituser a été configuré pour n'accepter que des commandes git. En effet, le fichier /etc/passwd de la machine yologit contient la ligne :
gituser:x:1000:1000:,,,:/home/gituser:/usr/bin/git-shellRetournez dans votre répertoire de travail d'administration système (quittez git-test/) et clonez le dépôt :
$ git clone gituser@yologit.netlib.re:<nom_du_depot_distant>
(si vous devez utiliser tor, ajoutez un bloc dans votre ./ssh/config avec une option ProxyCommand comme pour votre conteneur)
Lorsque vous avez fini avec les exercices précédents, reseignez-vous sur l'avancement des membres de votre groupe. Si vous avez de l'avance, attendez votre groupe en faisant les paragraphes "Solo programmation" et "Solo branches bonus".
Une fois que tout le monde est prêt, manifestez-vous sur le salon mattermost sysadmin_git et indiquez que votre groupe est prêt pour travailler ensemble sur un dépôt distant commun.
Voici quelques infos pour pouvoir cloner le dépôt distant commun:
la machine distante est un conteneur accessible via le nom de domaine yologit.netlib.re
les fingerprints des clefs publiques du serveur SSH de ce conteneur sont :
ECDSA : SHA256:9j1WU56gjFkSACA3zILrVv2EdTZ2Aphs2sxuas/P004 RSA : SHA256:UBSnfyQlOscdN6T3ftStt+ne6OL0fiqVA9h6+wVisVM ED25519 : SHA256:PYktqMJQNdLdc8IGCnlO4On6sCfQYR6X4hR1ANKN/9I
l'user qui héberge le dépôt distant sur ce conteneur s'appelle gituser,
votre clef publique SSH a été installée dans le fichier ~/.ssh/authorized_keys de l'user gituser de sorte que vous n'avez pas besoin de mot de passe pour vous connecter.
le nom du dépôt distant attribué à votre groupe vous sera donné par un enseignant.
Essayez de vous connecter par SSH sur la machine yologit.netlib.re en tant qu'user gituser. Vérifiez et validez le fingerprint. Vous serez ensuite interdit·e de vous connecter: c'est normal, le shell de l'user gituser a été configuré pour n'accepter que des commandes git. En effet, le fichier /etc/passwd de la machine yologit contient la ligne :
gituser:x:1000:1000:,,,:/home/gituser:/usr/bin/git-shellRetournez dans votre répertoire de travail d'administration système (quittez git-test/) et clonez le dépôt :
$ git clone gituser@yologit.netlib.re:<nom_du_depot_distant>
(si vous devez utiliser tor, ajoutez un bloc dans votre ./ssh/config avec une option ProxyCommand comme pour votre conteneur)
perso/. Créez-y un fichier dont le nom est votre prenom.nom et ajoutez-y des informations (non-compromettantes) sur vous.perso/<prenom.nom> et repoussez votre nouveau commit.pull des push et des merge.Le but de ce paragraphe est de jouer au cadavre exquis inventé par les surréalistes, mais avec git.
cadavre_exquis/. Dans ce répertoire se trouve un fichier nommé template.txt.test1.txt, le pousse et que tout le monde le récupère et se trouve sur la même branche.test1.txt en ajoutant au niveau du tiret qui correspond à votre ligne, un ensemble de mots admissible.master par un·e étudiant·e du groupe.baston, ajoutez-y du contenu, commitez-le et poussez vos changements sur le dépôt distant.baston et repoussez votre nouveau commit.pull des push et des merge en rapport avec le fichier baston.Si vous êtes arrivé·e à ce paragraphe dans les 3h, félicitations !