Utiliser git dans vos projets

0 Réponses • 363 Vues

Nuri Yuri

HostMaster

Si vous suivez PSDK, vous avez surement constaté que git est de plus en plus utilisé et qu'en plus de ça le développement des nouveaux outils PSDK facilitent l'usage de git pour certaines choses.
Par exemple les fichiers non compilés de PSDK (map tiled, bientôt évènements et données) sont au format texte car git est très efficace pour gérer les versions sur des fichiers texte.

Sur ce sujet je vais développer les raisons d'utiliser git et donner des conseils d'utilisation.

Pourquoi utiliser git

Je vais répondre à cette question en expliquant ce qu'est git.

Git est un logiciel libre de gestion de versions décentralisé.
Contrairement à Dropbox, vous êtes libres d'héberger votre dépôt où vous voulez (Gitlab, Github, sur votre serveur).
En plus de ça, vous pouvez revenir en arrière sans être connecté à internet, chaque contributeur possède une copie complète de tout l'historique.
Et pour finir, vous pouvez créer des branches pour implémenter des fonctionnalités afin d'éviter d'affecter tout le projet tant que la fonctionnalité n'est pas stable.

Git est donc un outil puissant qui vous permettra de mieux gérer votre projet et d'éviter les petits problèmes de données perdues.

Exemple de projet sous Git : https://gitlab.com/NuriYuri/gemme_4.0

Comment ne pas utiliser git

Bien que git apporte des avantages énorme comparé à Dropbox, il est convenu que versionner des fichiers binaires (exe, images, musiques, rxdata) est une mauvaise pratique. Git ne gère que les fichiers texte donc ne versionnons que les fichiers texte. Pour les fichiers binaire, couplez git à Dropbox ou Google Drive.

Obtenir git

Pour obtenir git, il y a deux manière de procéder :
- si vous n'avez pas peur d'utiliser des lignes de commande, vous pouvez télécharger git à l'adresse suivante et l'installer Télécharger GIT
- si vous êtes plus à l'aise avec des interfaces utilisateur, alors je vous recommande GitKraken

Utiliser git

Créer un nouveau dépôt

Lorsque vous commencer un projet, il faut créer un dépôt, nous allons commencer par créer un dépôt local à l'aide de la commande git init. Cette commande doit être exécutée dans le dossier où vous voulez créer votre dépôt.

Une fois que vous avez fait cela, créez un fichier README.md où vous allez décrire votre projet en Markdown et créez un fichier .gitignore où vous allez définir les types de fichiers qui ne doivent jamais être suivit par git.

Je vous invite à regarder sur internet comment se format le Markdown et comment se fait un fichier .gitignore

Ajouter les modifications

Quand vous avez ajouté, modifié ou supprimé des fichiers, vous pouvez les ajouter à votre dépôt local à l'aide de la commande git add.

Avant d'ajouter des fichiers à l'aveugle, il est conseillé de savoir quels fichiers ont été modifiés, utilisez la commande git status -s.
Les modifications sont affichés avec un M, les ajouts avec un A, les suppressions avec un D et les fichiers non suivit (fraichement ajoutés) sont affichés avec un double point d'interrogation.

- Si vous voulez tout ajouter, utilisez git add -A
- Si vous voulez ajouter un dossier entier, utilisez git add nom_dossier
- Si vous voulez ajouter quelques fichiers, utilisez git add nom_fichier

Confirmer les modifications

Une fois les modifications ajoutées, il faut les confirmer pour qu'elles soient définitivement ajouté au dépôt local, pour cela utilise la commande git commit -m "message de commit"

Ajouter un dépôt distant

Lorsque vous n'avez pas cloné le dépôt, il n'a pas de dépôt distant, pour cela, il faut ajouter un dépôt distant à l'aide de la commande : git remote add origin URL où URL est l'url fournie par github, gitlab ou votre dépôt hébergé.

Envoyer les modifications au dépôt distant

Quand vos modifications sont confirmée et que vous désirez en faire profiter tous vos collaborateurs, envoyez les modifications au dépôt distant à l'aide de git push

Attetion ! Lorsque vous n'êtes pas phasé avec le dépôt distant, il se peut que git push échoue (conflit), il faut dans ce cas gérer les conflits.

Note : Il se peut que la commande git push échoue car la branche ne sait pas où être envoyée, pour corriger ça utilisez la commande git push --set-upstream origin nombranche où nombranche est le nom de la branche actuelle (master si vous avez pas donné de paramètres à git init).

Récupérer les modifications d'un dépôt distant

Généralement cette étape vient avant que vous ne fassiez des modifications (d'où l'intérêt d'utiliser des branches autres que la branche principale pour travailler).
Pour récupérer les modifications d'un dépôt distant, vous devez utiliser git pull

Créer une branche

Comme suggérer dans la partie précédente, il est mieux de créer une branche avant de travailler, après quelques explications, je vais vous dire comment créer une branche.

Avant de créer des branches, il faut se mettre au clair sur l'intérêt de celle-ci. Les branches permettent de séparer les étapes de travail, on les nomme en conséquence. Voici les différents types de nom de branche :
- master : Cette branche est la branche crée par défaut lorsque vous créez un dépôt, sur cette branche, vous ne devez mettre que les versions stables de votre travail (livraison de version par exemple)
- develop : Vous devrez avant tout créer cette branche, c'est la branche sur laquelle tout le travail est fusionné avant d'être envoyé sur master. C'est donc la branche principale.
- feature/nom_feature : Cette branche (que vous nommerez autrement que nom_feature) est une branche de développement d'une nouvelle fonctionnalité. C'est ici que vous vous placez quand vous allez commencer votre travail (afin de ne pas casser de choses dans develop avant que vous n'ayez fini votre fonctionnalité).
- bugfix/id_bug : Cette branche (que vous nommerez autrement que id_bug) est une branche de correction de bug. C'est ici que vous travaillerez lorsque vous ferez des corrections de bug.

Maintenant que tout ceci est expliqué, nous allons passer à la création de branche. Mais avant de créer la branche, pensez à vous mettre à jour à l'aide de git pull (c'est mieux de diverger du dernier commit).
Pour créer une branche, entrez la commande git branch nom_branche où nom_branche est le nom de la branche que vous voulez créer.

Se déplacer sur une branche

Quand vous avez créé une branche, vous n'est pas nécessairement déplacé sur celle-ci, pour se faire, entrez la commande git checkout nom_branche.

Note : Pour créer et se déplacer sur une branche, vous pouvez utiliser git checkout -b nom_branche.

Fusionner deux branches

Quand vous avez terminé votre travail, vous devez fusionner votre branche avec la branche principale. Pour réaliser cette fusion, il faut suivre plusieurs étapes :

1. Confirmer toute les modifications de votre branche. (git add -> git commit ou juste git commit)
2. Se déplacer sur la branche sur laquelle se fusionner. (exemple : git checkout develop)
3. Charger les dernières modifications de la branche. (git pull)
4. Se replacer sur votre branche. (git checkout nom_branche)
5. Fusionner les modifications de la branche principale sur votre branche. (Exemple : git merge develop)
6. Régler les conflits (partie suivante)
7. Se déplacer sur la branche sur laquelle se fusionner et fusionner votre branche dessus (git checkout develop -> git merge votre_branche)

Régler les conflits

Lorsque vous fusionnez des branches, il arrive qu'il y ait des conflits, pour les régler, il faut déjà les lister.
Utilisez la commande git status -s, tous les éléments qui s'affichent en UU sont des conflits.

Ensuite, vous aurez besoin d'un éditeur de code pratique pour gérer les conflits, par exemple Visual Code. Celui-ci vous permettra de choisir facilement si vous gardez votre version ou la version de la branche en cliquant sur le lien adéquat à chaque conflit. Notez que les conflits se localisent en vert dans la scrollbar.

Une fois que vous avez réglé tous les conflits, ajoutez les fichiers conflictuels et exécutez git push (Il n'y a pas besoin de message de commit généralement pour les conflits).

Supprimer une branche

Quand vous avez terminé votre feature ou votre correction de bug, il peut être judicieux de supprimer la branche (c'est plus facile de s'y retrouver après).
Pour se faire, utilisez les commandes suivantes :
- git branch -d nom_branche (supprime la branche locale)
- git push origin --delete nom_branche (supprime la branche distante)

Cloner un dépôt distant

Si vous contribuez à un projet, vous aurez surement besoin de cloner ce projet (on ne crée pas deux fois le même projet). Pour réaliser cette action, vous aurez besoin de l'URL du projet (ssh de préférence) et ensuite vous aurez juste à entrer la commande git clone URL dans le dossier où vous voulez que le dossier du dépôt du projet soit créé.

Notez que pour le clone SSH vous aurez besoin de réaliser certaines actions si elles n'ont pas été faites.
Premièrement, créer votre clé SSH à l'aide de ssh-keygen (pour ne pas être embêté, ne mettez pas de passphrase)
Deuxièmement, ajoutez votre clé publique à tous vos compte (gitlab et github), la clé publique se trouve dans le fichier .ssh/id_rsa.pub (copiez l'intégralité du contenu du fichier et collez le là où vous pouvez entrer votre clé publique sur vos comptes).

Ajouter un sous module

Sous git, si vous avez des dépendances d'autres projets, par exemple le master de PSDK, vous pouvez ajouter le dépôt à votre projet à l'aide de git submodule add URL. Ceci crée un lien vers le dépôt de PSDK dans votre dépôt distant plutôt que de copier tous les fichiers (comme le ferait git clone). L'avantage énorme est que vous pouvez vous déplacer dans le dossier du sous module et exécuter git pull pour récupérer les mises à jour. Si vous aviez utilisé git clone, vous ne seriez pas capable de charger les mises à jour.

Supprimer un sous module

Si jamais vous n'avez plus besoin des dépendances d'un autre projet (vous choisissez d'utiliser autre chose par exemple), vous pouvez supprimer un sous module de la manière suivante :
- git submodule deinit nom_dossier (supprime le lien vers le module en question)
- git rm nom_dossier (supprime le dossier du suivit de git)

Ensuite supprimez le dossier et envoyez la modification à votre dépôt distant.


Synthèse

Si vous comprenez déjà les commandes, voici des suites d'instruction pour les différentes manipulations que vous feriez avec git.

Créer un dépôt

- mkdir nom_dossier
- cd nom_dossier
- git init
- Ajouter les premiers fichiers
- git add -A
- git commit -m "first commit"
- git remote add origin URL
- git push --set-upstream origin master
- git checkout -b develop
- git push --set-upstream origin develop

Réaliser une fonctionnalité ou une correction de bug

- git checkout develop
- git pull
- git checkout -b nom_branche (ici mettez feature/nom_feature ou bugfix/bug_id)
- Faites votre travail
- git add -A
- git commit -m "Travail réalisé"
- git checkout develop
- git pull
- git checkout nom_branche
- git merge develop
- Corrigez les éventuel conflits
- git push
- git checkout develop
- git merge nom_branche
- git push

Ajouter un sous module

- git submodule add URL

Supprimer un sous module

- git submodule deinit nom_dossier
- git rm nom_dossier
- rm -r nom_dossier (équivalent UNIX de supprimer le dossier depuis l'explorateur)

Supprimer les fichiers non suivis et non filtrés par .gitignore

- git clean -df

Revenir au commit avant vos modifications en annulant toute modifications

- git reset --hard

Revenir à un commit particulier

- git checkout sha1_du_commit_ou_tag



Notez que cet article est loin d'être parfait, vous trouverez de meilleurs explications sur internet ^^
ln(yo) = <3

Fonctionnalité PSDK Tuto Making


There was an error while thanking
Thanking...