Initialisation De Git LFS Et Des Sous-Modules
Initialisation de LFS et des sous-modules
Pour initialiser un dépôt Git dans un dossier, tout en incluant un dépôt Git de sous-dossier et des gros fichiers (en utilisant Git Large File Storage, LFS), il est nécessaire d’initialiser LFS et les sous-modules :
-
Installer Git LFS : Vous pouvez visiter le site officiel de Git LFS pour savoir comment l’installer.
-
Initialiser le dossier principal en tant que dépôt Git : Ouvrez la ligne de commande ou le terminal, naviguez vers le chemin du dossier principal, et exécutez la commande suivante pour initialiser un nouveau dépôt Git :
1
git init
-
Ajouter le support Git LFS : Dans le même répertoire, exécutez la commande suivante pour activer Git LFS :
1
git lfs install
-
Configurer le suivi des gros fichiers avec LFS : Déterminez les gros fichiers ou types de fichiers à suivre avec LFS. Utilisez la commande
git lfs track
pour spécifier. Par exemple, si vous souhaitez suivre tous les fichiers.zip
, vous pouvez exécuter :1
git lfs track "*.zip"
Après avoir exécuté cette commande, elle ajoutera la configuration correspondante dans le fichier
.gitattributes
. Assurez-vous d’ajouter le fichier.gitattributes
au dépôt :1
git add .gitattributes
-
Ajouter le dépôt Git du sous-dossier en tant que sous-module : Si le sous-dossier est déjà un dépôt Git et que vous souhaitez conserver son historique de mises à jour et de commits indépendant, vous pouvez l’ajouter en tant que sous-module. Utilisez la commande suivante, où
path_to_subfolder
est le chemin relatif du sous-dossier :1
git submodule add <repository_url> path_to_subfolder
Remarque : Remplacez
<repository_url>
par l’URL du dépôt distant du sous-dossier. Si le dépôt Git du sous-dossier n’a pas de dépôt distant, il est nécessaire de créer un dépôt distant pour le sous-dossier d’abord. -
Commit et push : Une fois que vous avez configuré le suivi LFS et ajouté tous les fichiers nécessaires, vous pouvez ajouter ces modifications au dépôt Git et effectuer un commit :
1 2
git add . git commit -m "Initial commit with LFS and submodule"
Si le dépôt principal a un dépôt distant correspondant, utilisez la commande
git push
pour pousser les modifications vers le dépôt distant.
En suivant les étapes ci-dessus, vous pouvez initialiser avec succès un dépôt Git dans un dossier principal contenant d’autres gros fichiers et des dépôts Git de sous-dossiers, et activer Git LFS.
Isolation LFS
Lors de l’utilisation de Git et de Git Large File Storage (LFS), la configuration LFS est généralement appliquée à l’ensemble du dépôt, plutôt qu’à un dépôt distant spécifique. Cela signifie que lorsque LFS est activé et que certains types de fichiers sont suivis, ces fichiers suivis par LFS seront traités lors de la poussée vers n’importe quel dépôt distant.
Cependant, si vous souhaitez éviter de pousser les fichiers suivis par LFS vers un dépôt distant spécifique, vous devez utiliser deux branches distinctes pour gérer les objets LFS et non-LFS, puis ne pousser que la branche ne contenant pas d’objets LFS vers le dépôt distant où vous ne souhaitez pas inclure d’objets LFS.
1. Maintenir deux branches
- Branche LFS : Cette branche contient les fichiers suivis par LFS, vous pouvez travailler normalement sur cette branche.
- Branche non-LFS : Cette branche ne contient aucun fichier suivi par LFS. Vous pouvez maintenir cet état en utilisant des règles de filtrage
.gitattributes
ou simplement en vous assurant de ne pas commettre de gros fichiers sur cette branche.
2. Stratégie de branche
Lorsque vous êtes prêt à pousser des modifications vers un dépôt distant, déterminez d’abord si vous avez besoin d’inclure des objets LFS.
- Si vous avez besoin d’inclure des objets LFS, poussez normalement les modifications vers la branche du dépôt distant correspondant.
- Si vous n’avez pas besoin d’inclure des objets LFS, fusionnez les modifications (sans les fichiers LFS) dans la branche non-LFS, puis poussez uniquement cette branche vers le dépôt distant spécifique.
3. Exemple d’opération
Supposons que main
soit la branche principale de travail (branche LFS), et que non-lfs-branch
soit la branche non-LFS. Lorsque vous poussez vers un dépôt distant où vous ne souhaitez pas inclure de fichiers LFS, vous pouvez procéder comme suit :
-
Assurez-vous que
non-lfs-branch
est à jour et contient toutes les modifications non-LFS de la branchemain
.1 2
git checkout non-lfs-branch git merge main --no-commit --no-ff
Lors de la fusion, si des modifications contenant des fichiers LFS apparaissent, vous devez résoudre ces différences manuellement pour vous assurer de ne pas inclure les fichiers LFS.
-
Une fois la fusion terminée, poussez
non-lfs-branch
vers le dépôt distant qui ne nécessite pas de fichiers LFS.1
git push <remote-name> non-lfs-branch:<remote-branch-name>
Remplacez
<remote-name>
et<remote-branch-name>
par le nom du dépôt distant cible et le nom de la branche.