Git pour les débutants
Pourquoi Git pour les debutants ?
Git est un système de contrôle de versions décentralisé et populaire utilisé dans l'industrie du développement logiciel. Il permet à plusieurs développeurs de travailler ensemble sur un projet en même temps tout en ayant une histoire complète des changements apportés au codebase. Voici pourquoi Git est indispensable pour les débutants :
- Collaboration : Git facilite la collaboration entre équipes de développement, assurant que chaque membre a sa propre copie du code et peut travailler indépendamment.
- Historique des modifications : Il garde un historique complet des modifications apportées au code, permettant aux développeurs d'identifier qui a fait quoi et quand.
Un cas concret de l'utilisation de Git est le développement collaborative sur un projet open source. Chaque contributeur peut soumettre des modifications via des pull requests, et les gestionnaires du projet peuvent examiner ces modifications avant de les fusionner dans la branche principale.
Prerequis
Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :
Un compte GitHub : C'est une plateforme populaire pour héberger des dépôts Git.
- Vous pouvez créer un compte gratuitement sur GitHub.
Un IDE ou éditeur de code moderne : Par exemple, Visual Studio Code, IntelliJ IDEA, ou Atom.
Concepts fondamentaux
1. Repository (RÉPÔT)
Un dépôt Git est un espace local où vous stockez le projet et toutes ses histoires de versions.
## Créer un nouveau dépôt
mkdir mon_projet
cd mon_projet
git init
2. Staging Area (ZONE DE STAGING)
La zone de staging est une étape intermédiaire entre l'espace de travail et le dépôt Git. Elle permet de choisir les modifications à inclure dans la prochaine version.
## Ajouter un fichier à la zone de staging
git add mon_fichier.txt
## Ajouter tous les fichiers modifiés à la zone de staging
git add .
3. Commit (COMMIT)
Un commit est une snapshot du projet au moment donné, associé à un message expliquant les modifications apportées.
## Effectuer un commit avec un message
git commit -m "Ajout d'une fonctionnalité"
4. Branches (BRANCHES)
Une branche est une ligne de développement indépendante du dépôt principal. Cela permet aux développeurs de travailler sur des fonctionnalités en parallèle sans interférer avec le code principal.
## Créer et basculer sur une nouvelle branche
git branch ma_nouvelle_branche
git checkout ma_nouvelle_branche
## Créer une branche et se mettre dessus (syntaxe simplifiée)
git checkout -b ma_nouvelle_branche
5. Push (PUSH)
Push permet de partager vos modifications avec le dépôt distant.
## Pousser les modifications vers le dépôt distant
git push origin ma_nouvelle_branche
6. Pull (PULL)
Pull permet de récupérer les dernières modifications du dépôt distant et de les fusionner dans votre propre environnement de travail.
## Récupérer les modifications depuis le dépôt distant
git pull origin master
Mise en pratique : projet fil rouge
Mini-projet : Un gestionnaire de tâches
Étape 1 : Créer un nouveau dépôt et initialiser Git
mkdir todo_manager
cd todo_manager
git init
Étape 2 : Ajouter les fichiers nécessaires
touch main.py
echo "# Gestionnaire de tâches" > README.md
git add .
git commit -m "Initialisation du projet"
git branch develop
git checkout develop
Étape 3 : Créer une fonction pour ajouter des tâches
## main.py
tasks = []
def add_task(task):
tasks.append(task)
print(f"Tâche ajoutée: {task}")
add_task("Faire les courses")
print(tasks)
git add .
git commit -m "Ajout de la fonction add_task"
Étape 4 : Créer une fonction pour afficher toutes les tâches
## main.py
def display_tasks():
print("Liste des tâches:")
for task in tasks:
print(f"- {task}")
display_tasks()
git add .
git commit -m "Ajout de la fonction display_tasks"
Étape 5 : Créer une fonction pour supprimer une tâche
## main.py
def remove_task(task):
if task in tasks:
tasks.remove(task)
print(f"Tâche supprimée: {task}")
else:
print("Tâche non trouvée")
remove_task("Faire les courses")
print(tasks)
git add .
git commit -m "Ajout de la fonction remove_task"
Erreurs frequentes et debugging
1. fatal: not a git repository (or any of the parent directories): .git
Message d'erreur :
fatal: not a git repository (or any of the parent directories): .git
Cause : Vous n'êtes pas dans un dépôt Git ou vous n'avez pas initialisé le dépôt.
Correction :
git init
2. fatal: unable to create file: Permission denied
Message d'erreur :
fatal: unable to create file: Permission denied
Cause : Vous n'avez pas les permissions nécessaires pour créer des fichiers dans le répertoire.
Correction :
Changer les permissions du répertoire :
chmod 755 mon_projet
3. fatal: refusing to merge unrelated histories
Message d'erreur :
fatal: refusing to merge unrelated histories
Cause : Vous essayez de fusionner deux dépôts Git qui n'ont pas d'historique commun.
Correction :
Utiliser l'option --allow-unrelated-histories :
git pull origin develop --allow-unrelated-histories
Pour aller plus loin
1. Forking et Pull Requests (PR)
- Apprenez à forker des dépôts GitHub, travailler sur vos propres branches et soumettre des PR.
- Documentation GitHub
2. Gitignore
- Apprenez à utiliser un
.gitignorepour éviter le suivi de fichiers inutiles. - Guide Gitignore
3. Rebasing
- Apprenez à utiliser
rebasepour garder une histoire linéaire et claire du code. - Documentation Git Rebase
Défi pratique :
Créez un projet de scraper simple qui récupère les titres des dernières nouvelles d'un site web. Utilisez des branches pour chaque fonctionnalité et faites des commits réguliers.
Ce tutoriel a couvert les concepts fondamentaux de Git, vous avez créé un mini-projet complet, et vous avez appris à gérer les erreurs courantes. Vous êtes maintenant prêt à utiliser Git dans vos projets personnels et professionnels.