# 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._