docs: Ajout du guide de migration Git GitLab vers Gitea

- Guide complet avec toutes les commandes commentées
- Phases de migration sécurisées (sauvegarde, migration, nettoyage)
- Gestion des problèmes courants
- Exemple concret de la migration réalisée
This commit is contained in:
d6soft
2025-06-24 13:31:56 +02:00
parent 416d648a14
commit 3bbc599ab4

View File

@@ -0,0 +1,218 @@
# Guide de Migration Git : GitLab vers Gitea
Guide complet pour migrer un dépôt Git de GitLab vers Gitea en préservant l'historique complet et en nettoyant les branches obsolètes.
## 📋 Prérequis
- Accès au dépôt GitLab source
- Accès (push) au nouveau dépôt Gitea (créé et vide)
- Git configuré localement
## 🚀 Étapes de Migration
### Phase 1 : Préparation et Commit
```bash
# Vérifier l'état actuel du dépôt
git status
# Ajouter toutes les modifications en cours
git add .
# Commiter les modifications avant migration
git commit -m "Commit avant migration vers Gitea - consolidation des features"
# Vérifier que le working tree est propre
git status
```
### Phase 2 : Sauvegarde vers l'Ancien Dépôt
```bash
# Voir toutes les branches disponibles
git branch -a
# Pousser la branche actuelle vers GitLab (sauvegarde de sécurité)
git push origin feature/nom-de-votre-branche
# Optionnel : Sauvegarder toutes les branches
git push origin --all
# Optionnel : Sauvegarder les tags
git push origin --tags
```
### Phase 3 : Migration vers Gitea
```bash
# Vérifier la configuration remote actuelle
git remote -v
# Supprimer l'ancien remote GitLab
git remote remove origin
# Ajouter le nouveau remote Gitea
git remote add origin https://votre-gitea.com/utilisateur/depot.git
# Vérifier la nouvelle configuration
git remote -v
# Pousser toutes les branches vers Gitea (migration complète)
git push -u origin --all
# Pousser les tags vers Gitea
git push origin --tags
```
### Phase 4 : Vérification de la Migration
```bash
# Vérifier l'état des branches après migration
git branch -a
# Vérifier le statut
git status
# Optionnel : Tester la connectivité
git remote show origin
```
## 🧹 Nettoyage et Consolidation
### Merger les Branches de Feature
```bash
# Basculer vers la branche principale
git checkout main
# En cas de conflit lors du checkout, stasher les modifications
git stash
# Merger une branche de feature
git merge feature/nom-de-la-branche
# Pousser main mise à jour
git push origin main
```
### Vérifier les Branches Mergées
```bash
# Lister toutes les branches déjà mergées dans main
git branch --merged main
```
### Supprimer les Branches Obsolètes
```bash
# Supprimer les branches locales (une par une ou groupées)
git branch -d feature/branche1 feature/branche2 feature/branche3
# Supprimer les branches distantes
git push origin --delete feature/branche1 feature/branche2 feature/branche3
# Vérification finale - ne devrait rester que main
git branch -a
```
## ✅ Vérification Finale
```bash
# État final souhaité
git branch -a
# Résultat attendu :
# * main
# remotes/origin/main
# Vérifier que tout est synchronisé
git status
# Résultat attendu : "nothing to commit, working tree clean"
```
## 🔧 Gestion des Problèmes Courants
### Erreur d'Authentification
```bash
# Configurer les credentials si nécessaire
git config --global user.name "VotreNom"
git config --global user.email "votre@email.com"
# Ou utiliser SSH au lieu de HTTPS
git remote set-url origin git@votre-gitea.com:utilisateur/depot.git
```
### Conflits lors du Merge
```bash
# Sauvegarder les modifications locales
git stash
# Faire le merge
git merge feature/branche
# Récupérer les modifications si nécessaire
git stash pop
```
### Annuler des Modifications Locales
```bash
# Annuler les modifications sur des fichiers spécifiques
git checkout -- fichier1 fichier2
# Ou reset complet (ATTENTION : perte des modifications)
git reset --hard HEAD
```
## 📊 Résumé des Avantages
**Historique préservé** : Tous les commits sont conservés
**Branches migrées** : Toutes les branches sont transférées
**Sauvegarde sécurisée** : L'ancien dépôt reste intact
**Nettoyage propre** : Suppression sécurisée des branches obsolètes
**Consolidation** : Code unifié sur la branche principale
## ⚠️ Points d'Attention
- **Toujours sauvegarder** vers l'ancien dépôt avant migration
- **Vérifier les droits** sur le nouveau dépôt avant de commencer
- **Tester la connectivité** avec un petit push avant la migration complète
- **Vérifier que les branches sont mergées** avant de les supprimer
- **Communiquer** avec l'équipe sur le changement de dépôt
## 🎯 Commandes Essentielles Résumées
```bash
# Migration complète en une fois
git add . && git commit -m "Pre-migration commit"
git push origin --all # Sauvegarde
git remote remove origin
git remote add origin https://nouveau-depot.git
git push -u origin --all # Migration
# Nettoyage
git checkout main
git branch --merged main # Vérifier
git branch -d branche1 branche2 # Supprimer locales
git push origin --delete branche1 branche2 # Supprimer distantes
```
## 📝 Exemple Concret
Voici l'exemple de la migration réalisée pour ce projet :
```bash
# Migration de : http://51.68.36.203:35788/d6soft/geosector.git
# Vers : https://gitea.d6soft.fr/D6/geo.git
# Résultats :
# - 2290 objets migrés (140.23 MiB)
# - 6 branches transférées
# - Historique complet préservé
# - Nettoyage final : seule la branche main conservée
```
---
_Guide testé et validé lors de la migration réussie d'un projet multi-branches avec préservation complète de l'historique._