Travailler en équipe avec Git et Godot
Partager un projet qui fonctionne aussi sur les machines des autres.
| Moment | Réflexe à adopter |
|---|---|
| Avant de travailler | Vérifier sa branche et récupérer les changements utiles. |
| Pendant le travail | Se coordonner sur les scènes et les ressources modifiées. |
| Avant de partager | Enregistrer, tester et examiner les modifications. |
| Avant d’intégrer | Faire vérifier le résultat par un autre membre. |
Les commandes s’utilisent dans le terminal sous macOS ou Linux, ou dans Git Bash sous Windows, avec Git installé. Sauf pour le clonage, placez-vous dans le dossier du dépôt. Adaptez les URL, noms de branches et chemins des exemples.
Dans ce guide, main est la branche principale et origin désigne
le dépôt GitLab de l’équipe.
Pendant l’autoformation
Commencez par cloner, ouvrir, modifier et partager le projet. Vous pouvez utiliser des branches d’exploration aux noms explicites.
Les références aux issues deviennent obligatoires après la mise en place du backlog, selon les conventions GitLab.
Pour préparer l’arborescence, le README et les documents partagés, consultez le guide d’organisation du dépôt.
1. Préparer le projet partagé¶
Une même version de Godot et un dépôt commun pour toute l’équipe.
Vérifiez la version exacte installée à l’IUT et choisissez ensemble une version compatible avec le projet utilisé.
Utilisez cette même version sur vos ordinateurs personnels.
Indiquez dans le README la version retenue, l’emplacement de
project.godotet les instructions pour lancer le jeu.
Cloner et ouvrir le projet
Un membre prépare le projet commun dans le dépôt GitLab de l’équipe. Les autres récupèrent cette base par clonage.
Copiez l’URL de clonage depuis GitLab et remplacez URL_DU_DEPOT :
git clone URL_DU_DEPOT projet-equipe
cd projet-equipeConfigurez votre identité dans cette copie du dépôt :
git config user.name "Prénom Nom"
git config user.email "votre-adresse-associee-a-gitlab"Dans le gestionnaire de projets Godot, utilisez Importer
et sélectionnez le fichier project.godot indiqué dans le README.
Laissez l’importation des ressources se terminer, puis lancez le jeu.
Chaque membre travaille dans sa propre copie du dépôt.
Les échanges passent par GitLab avec push et pull.
Quels fichiers conserver dans Git ?
| À conserver | Pourquoi ? |
|---|---|
project.godot | Configuration commune du projet. |
| Scripts, scènes et ressources | Contenu nécessaire au jeu. |
| Images, sons et autres fichiers sources utilisés | Ressources nécessaires à l’importation. |
Fichiers comme image.png.import | Paramètres d’importation de la ressource. |
Fichiers comme joueur.gd.uid, lorsqu’ils sont générés | Identifiants associés aux scripts et aux shaders. |
.gitignore, .gitattributes, documentation et crédits | Règles communes et informations utiles au projet. |
Le dossier .godot/ est un cache local à ignorer.
Il est différent des fichiers .import placés à côté des ressources.
Conservez les fichiers .uid générés depuis Godot 4.4.
Placez les exports du jeu dans un dossier extérieur au dépôt pendant le développement.
Si les fichiers .gitignore et .gitattributes sont absents,
Godot peut les générer avec Project > Version Control >
Generate Version Control Metadata, en choisissant Git.
Examinez les règles existantes avant de les remplacer.
Conservez notamment la règle de fins de ligne de .gitattributes
pour faciliter le travail entre Windows, macOS et Linux.
Références : gestion de versions, fichiers d’importation et fichiers UID.
2. Commencer ou reprendre un travail¶
Vérifiez votre situation avant de changer de branche ou de fusionner.
Enregistrez les scènes et les scripts, arrêtez le jeu et fermez l’éditeur Godot avant une opération Git qui modifie les fichiers.
Exécutez
git statuspour vérifier la branche et les changements locaux.Choisissez ci-dessous le cas correspondant à votre travail.
Rouvrez le projet dans Godot lorsque les opérations Git sont terminées.
S’il reste des modifications locales
Examinez-les avant de continuer. Si elles appartiennent à votre travail sur la branche courante, enregistrez-les dans un commit explicite.
Un travail encore incomplet peut être conservé sur une branche. Indiquez ce qui reste à faire avant de demander son intégration.
Si les modifications sont sur la mauvaise branche ou si vous ne savez pas quoi conserver, demandez de l’aide avant de poursuivre.
Pour les opérations ci-dessous, le répertoire de travail doit être propre : aucun fichier du projet modifié, indexé ou non suivi ne doit rester à traiter. Des commits locaux peuvent toutefois être encore à envoyer sur GitLab.
Cas A — Créer une nouvelle branche
Utilisez ce cas si la branche n’existe encore ni localement ni sur GitLab.
git switch main
git pull --ff-only
git switch -c 42-recommencer-partieAdaptez le numéro et le nom à votre issue. Si la branche a déjà été créée depuis GitLab, utilisez le cas B.
L’option --ff-only refuse une mise à jour si les historiques
ont divergé. Si une commande échoue, lisez son message avant
d’exécuter la suivante.
Cas B — Récupérer une branche qui existe sur GitLab
Si la branche n’existe pas encore dans votre copie locale :
git fetch origin
git switch --track origin/42-recommencer-partieVous disposez maintenant d’une branche locale qui suit la branche correspondante sur GitLab.
Cas C — Reprendre une branche locale existante
git switch 42-recommencer-partie
git pull --ff-onlyLe pull suppose que la branche suit déjà sa version sur GitLab.
Si vous venez de créer une branche locale qui n’a jamais été publiée,
le premier push de la section 4 établira ce lien.
Si le pull refuse une divergence, consultez la section 6.
Documentation : changer de branche et récupérer les changements.
3. Se coordonner dans Godot¶
Répartissez les modifications pour pouvoir les intégrer progressivement.
Annoncez les scènes ou ressources partagées que vous allez modifier.
Répartissez le travail entre des scènes et composants distincts lorsque cela est pertinent.
Coordonnez les changements de
project.godot, des scènes principales et des ressources utilisées à plusieurs endroits.Testez régulièrement le jeu complet, même si vous travaillez sur une seule scène.
Déplacer ou renommer une ressource
Privilégiez le panneau FileSystem de Godot pour déplacer ou renommer les fichiers déjà utilisés dans le projet. Vérifiez ensuite les scènes et les scripts qui les référencent.
Conservez ensemble le fichier et ses métadonnées associées. Un déplacement peut modifier plusieurs fichiers : examinez-les et incluez les changements nécessaires dans le même commit.
Choisissez des noms de fichiers cohérents et respectez exactement leur casse dans les chemins. Évitez les fichiers dont les noms ne diffèrent que par une majuscule.
Références : organisation du projet et déplacement des ressources et UID.
4. Enregistrer et partager ses modifications¶
Enregistrer dans Godot, créer un commit et faire un push sont trois opérations différentes.
| Opération | Résultat |
|---|---|
| Enregistrer dans Godot | Écrire les modifications dans les fichiers locaux. |
| Créer un commit | Conserver une étape dans l’historique Git local. |
| Faire un push | Publier les commits de la branche sur GitLab. |
Examiner, sélectionner et créer le commit
Enregistrez votre travail, testez le résultat et arrêtez le jeu.
git status
git diffExaminez aussi les nouveaux fichiers signalés par git status :
ils ne sont pas affichés par git diff tant qu’ils ne sont pas indexés.
Sélectionnez les fichiers concernés. Les chemins suivants sont des exemples à adapter :
git add scenes/ecran_defaite.tscn scripts/ecran_defaite.gdAjoutez également les fichiers .uid, .import, ressources
ou suppressions liés à la modification, lorsqu’ils sont présents.
Vérifiez ce qui sera réellement enregistré :
git diff --cached
git statusPuis créez le commit :
git commit -m "Ajouter le bouton Recommencer (#42)"Regroupez des modifications cohérentes et utilisez les conventions de messages.
Envoyer le travail sur GitLab
Lors du premier envoi de cette branche :
git push -u origin 42-recommencer-partiePour les envois suivants, depuis cette même branche :
git pushVérifiez que vos commits apparaissent sur la bonne branche dans GitLab. Si un autre membre a envoyé des changements entre-temps, consultez la section 6 avant de réessayer.
Avant de changer d’ordinateur, envoyez vos commits. Sur l’autre ordinateur, récupérez ensuite la même branche.
Un push sur votre branche ne modifie pas main.
Vous pouvez donc partager un travail encore incomplet,
en signalant son état à l’équipe.
5. Intégrer le travail de l’équipe¶
Une merge request permet de proposer un résultat à la version commune.
Présentez les changements et la façon de les vérifier.
Demandez à un autre membre de tester ou de relire le résultat sur la branche proposée.
Prenez en compte son retour et faites vérifier les corrections.
Faites fusionner la merge request vers
mainpar un membre autorisé.Récupérez et vérifiez la version commune après l’intégration.
Décrire la merge request
## Changements
Résumé du résultat proposé.
## Vérification
Étapes permettant de tester le résultat.
Vérifications déjà réalisées.
## Points restant à discuter
À compléter si nécessaire.
Closes #42La référence de fermeture s’utilise seulement si cette merge request
termine l’issue. Pour une contribution partielle, utilisez
Contribue à #42.. Vérifiez aussi les références ajoutées automatiquement.
La personne qui vérifie laisse un retour concret : scénario exécuté, résultat obtenu et éventuels problèmes. Ce rôle est réparti entre les membres de l’équipe.
Les règles de validation et de fermeture s’appliquent également aux documents et aux ressources.
Récupérer les changements récents de main dans sa branche
Faites cette mise à jour lorsque votre travail doit être vérifié avec les dernières contributions intégrées. Commencez avec Godot fermé et un répertoire de travail propre.
git switch 42-recommencer-partie
git fetch origin
git merge origin/main -m "Intégrer les changements de main (#42)"Cette opération met à jour votre branche de travail.
Elle ne fusionne pas votre travail dans main.
En cas de conflit, suivez la section 6. Sinon, rouvrez Godot, vérifiez le résultat combiné, puis faites un push.
Vérifier la version commune et préparer un livrable
Après l’intégration, avec Godot fermé et vos fichiers locaux enregistrés dans des commits :
git switch main
git pull --ff-onlyRouvrez le projet et vérifiez le jeu complet. Créez une nouvelle branche pour le prochain travail.
Avant chaque livrable, demandez à un autre membre de vérifier la version exacte qui sera présentée, à partir d’un nouveau clone :
git clone URL_DU_DEPOT verification-jeu
cd verification-jeu
git switch --detach SHA_DU_COMMITRemplacez URL_DU_DEPOT par l’adresse du dépôt et SHA_DU_COMMIT
par l’identifiant du commit indiqué dans le support de présentation.
Cette copie sert aux vérifications. Poursuivez le développement dans votre copie habituelle, sur une branche de travail.
Suivez les instructions du README à cette révision pour repérer les fichiers oubliés et les étapes manquantes.
Lors des premiers livrables, complétez progressivement ces instructions. À partir du livrable 2, le guide doit permettre à une autre équipe de lancer cette version en autonomie sous Windows, macOS et Linux. Vérifiez la procédure sur les trois systèmes, puis maintenez-la à jour.
6. Résoudre les difficultés courantes¶
Lisez le message de Git ou de Godot et identifiez la cause avant de modifier autre chose.
Le pull ou le push est refusé sur une branche partagée
Si le message indique une divergence ou un rejet non-fast-forward,
un autre membre a peut-être publié des commits sur la même branche.
Depuis la branche concernée, avec Godot fermé et un répertoire de travail propre :
git fetch origin
git merge origin/42-recommencer-partie -m "Intégrer le travail partagé (#42)"Résolvez les éventuels conflits, vérifiez le résultat dans Godot, puis faites un push.
Cette opération récupère les contributions à votre branche.
La fusion de origin/main répond à un autre besoin.
Si la divergence concerne main, ou si le message signale
un problème d’accès ou de connexion, demandez de l’aide
sur ce problème précis. Ne forcez pas le push.
Git signale un conflit de fusion
Gardez Godot fermé pendant la résolution des conflits.
Utilisez
git statuspour identifier les fichiers concernés.Discutez avec les auteurs des changements pour déterminer le résultat à conserver.
Corrigez les fichiers et retirez les marqueurs de conflit.
Une fois tous les fichiers cohérents, rouvrez Godot et vérifiez les scènes et les comportements concernés.
Enregistrez, indexez les fichiers résolus avec
git add, puis terminez la fusion :
git commit -m "Résoudre les conflits de la branche (#42)"Pour une scène .tscn, le choix automatique de toute une version
peut effacer le travail d’un autre membre. Vérifiez le résultat
ensemble et demandez de l’aide si sa structure est difficile à comprendre.
Pour abandonner une fusion encore en cours, commencée avec un répertoire propre :
git merge --abortCette commande abandonne aussi les modifications faites pour résoudre les conflits. Elle ne sert pas à annuler une fusion déjà terminée. Fermez Godot avant de l’exécuter.
Le projet fonctionne sur une seule machine
Vérifiez ensemble :
La version exacte de Godot et la branche utilisées.
La présence des derniers commits sur GitLab.
Les fichiers non suivis signalés par
git statussur la machine où le jeu fonctionne.Les ressources sources et leurs fichiers
.importet.uid.La casse des noms de fichiers et les chemins utilisés.
Laissez Godot terminer l’importation et lisez la première erreur utile. Corrigez le dépôt ou le README, puis reprenez la vérification depuis un nouveau clonage.
Beaucoup de fichiers semblent modifiés sans raison
Examinez git status et git diff avant de créer un commit.
Vérifiez si cela correspond à une autre version de Godot,
à des fins de ligne différentes ou à une modification volontaire
des paramètres d’importation.
Si .godot/ apparaît dans les fichiers à envoyer, vérifiez
le .gitignore. Une règle d’exclusion ne retire pas automatiquement
de Git des fichiers déjà suivis : signalez ce cas pour le corriger ensemble.
Conservez les changements que vous comprenez et qui sont nécessaires au projet. Faites examiner les autres avant de les supprimer ou de les intégrer.