TP5-gitlinux/README.md
2025-05-04 19:47:52 +00:00

6.5 KiB
Raw Permalink Blame History

TP5 Activité de groupe : Découverte de Git sous Linux

Objectif de l'activite

Cette activite a pour but de decouvrir les commandes de base de Git sous Linux, dans un contexte collaboratif. Les etudiants travailleront par groupes pour developper un mini-projet en C, tout en utilisant les fonctionnalites principales de Git : clone d'un depot distant, commits, branches, fusions, resolution de conflits et push vers Gitea.

Avant propos : LE SHELL LINUX

Quest-ce que le Shell et pourquoi en connaitre un minimum sur ce sujet ?

  • Une interface en ligne de commande (CLI)
  • Permet dinteragir avec le système dexploitation linux
  • Très utilisé dans le monde scientifique
  • Puissance, rapidité, scriptabilité
  • Présent sur tous les serveurs Linux
  • Indispensable en recherche (Python, R, C, data science, calcul distribué...) pour automatiser, traiter des données, compiler, exécuter des codes
  • Indispensable en adminstration système (gestion de datacenter, de SI d'entreprise de d'organisation, dans le WEB,....) pour interragir de manière ultra efficace , à distance, sur une multitudes de machines.

##Les base du SHELL: Toute commande passée est de la forme :

commande [options] [arguments] [opérateurs de redirection] [filtres/pipes] [fichier de sortie]

avec :

commande                # Le programme ou utilitaire que vous voulez exécuter (ex: ls, grep, echo, etc.)

[options]              # Modificateurs qui changent le comportement de la commande (ex: -l, --help)

[arguments]            # Ce sur quoi la commande agit (ex: un fichier, un répertoire, une expression)

[> fichier]            # Redirection de la sortie standard (stdout) vers un fichier (créé ou écrasé)

[>> fichier]           # Redirection en ajoutant à un fichier (append au lieu décraser)

[< fichier]            # Lit un fichier en entrée standard (stdin), souvent utilisé avec des scripts ou des programmes

[| commande2]          # Pipe : envoie la sortie de la commande précédente vers lentrée de la suivante

[2> fichier_erreurs]   # Redirection de la sortie derreur (stderr)

[&> fichier]           # Redirection à la fois de stdout et stderr dans un seul fichier

##Exemple commenté complet

grep -i "erreur" logs.txt | sort | uniq -c > erreurs_traitees.txt 2> erreurs.log

àvec

Élément Rôle
grep Commande pour chercher du texte
-i Option : ignore la casse
"erreur" Mot recherché
logs.txt Fichier source
sort` Commande pour trier
uniq -c` Commande pour factoriser les résultats triés et compter le nombre d'itérations
> erreurs_traitees.txt Envoie le résultat dans un fichier (stdout)
2> erreurs.log Envoie les messages derreur dans un autre fichier (stderr)

Voici une liste non exhaustive des commandes shell linux courantes:

pwd         # Affiche le répertoire courant
ls          # Liste les fichiers
ls -l       # Liste détaillée
cd dossier/ # Se déplacer dans un dossier
cd ..       # Remonter dun dossier
cd ~        # Aller dans le dossier personnel
mkdir test  # Créer un dossier
cd test     # Entrer dans ce dossier
touch essai.txt # Créer un fichier


whoami      # Nom de lutilisateur
hostname    # Nom de la machine
date        # Date/heure
uptime      # Depuis combien de temps lordi est allumé


echo "Bonjour le monde" > fichier.txt   # Création avec contenu
cat fichier.txt                         # Affiche le contenu
echo "Ligne 2" >> fichier.txt           # Ajoute une ligne 
ma_commande --help                      # Ouvre l'aide de la commande ma_commande (exemple ls --help donne le manuel d'utilisation de la commande ls)


rm fichier.txt       # Supprimer un fichier
mv a.txt b.txt       # Renommer
cp a.txt b.txt       # Copier
nano hello.sh        # Editer un fichier texte avec l'utilitaire d'édition nano
vi hello.sh          # Editer un fichier texte avec l'utilitaire d'édition vi

Etape 1 - Création et Recuperation du projet depuis Gitea


Attention tout ce qui est entre truc doit être modifier pour corespondre au nommage de vos fichiers et projets


Créer en compte pour chaque membre de groupe sur https://gitea.apf-bi.ovh (avec votre addresse unilim) Créer un depot publique sur le gitea avec l'un des comptes juste créer (le nommer en accord avec votre groupe de TP: MIX-1-toto-tata)

Chaque groupe commence par cloner un depot depuis le gitea sur sa machine virtuelle linux (la lancer avec l'icone xubuntu du bureau. identifiant eleve mdp eleve).

git clone http://gitea.apf-bi.ovh/*<utilisateur>*/*projet-git.git*

Ensuite il faudra déclarer votre identité

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

Ensuite placez vous dans le dossier du projet, ajoutez un fichier source en C (un membre du binome le fait pour iniitalisé votre dépot), et realisent un premier commit suivi d'un push vers Gitea:

cd *projet-git*
nano main.c
git add main.c
git commit -m "Initial commit avec fichier main.c"
git push origin main

Etape 2 - Travail en branches Chaque membre du groupe cree sa propre branche pour ajouter une fonction au programme C. Attention il faut que le membre du binome n'ayant pas fait le commit-push initial de re-cloner le dépot d'abord avec un git clone. Pour se faire il faut donc faire:

git checkout -b *feature-nom*

Chaque membre de binome modifie main.c pour ajouter une fonction ou un commentaire (à l'aide de l'éditeur de texte en ligne de commande nano par exemple) Ensuite chaque membre effectue un commit sur sa branche et pousse la branche sur le serveur Gitea. En faisant:

git add main.c
git commit -m "Ajout de la fonction X"
git push origin feature-nom

Etape 3 - Fusion des branches Les membres du groupe fusionnent leurs branches dans la branche principale en local, puis synchronisent le depot avec Gitea. Des conflits peuvent survenir et devront etre resolus manuellement.

git checkout main
git pull origin main
git merge feature-nom

En cas de conflit :

git status
git diff

Resoudre manuellement les conflits, puis reprendre le processus de commit-push :

git add main.c
git commit -m "Resolution de conflit"
git push origin main

Etape 4 - Consultation de l'historique Les etudiants consultent l'historique des commits et visualisent la structure du projet.

git log --oneline --graph --all


Fichier C de depart (main.c)

#include <stdio.h>
int main() {
printf("Bonjour, Git !\n");
return 0;
}

Memo git (crédit github)

https://training.github.com/downloads/fr/github-git-cheat-sheet.pdf