91 votes

Livrer une structure de dossier vide (avec git)

J'ai un répertoire de données dans la racine du projet. Il contient un répertoire d'images et quelques fichiers. Voici un exemple :

data
 images
    image1.jpg
    image2.jpg
    image3.jpg 
 results.csv
 r.txt

Que faut-il écrire dans gitignore, pour ignorer les fichiers du répertoire data/ (c'est-à-dire results.csv et r.txt) et les fichiers du répertoire images/ (image.jpg, image2.jpg, image3.jpg) ?

Quand je l'envoie, la structure des dossiers dans le dépôt doit être la suivante :

data/
 images/

Donc, je veux juste que la structure du dossier vide soit commitée.

135voto

Il suffit d'ajouter un fichier .gitkeep dans chaque dossier que vous voulez engager.

Sous Windows, faites-le en cliquant avec le bouton droit de la souris dans le dossier et en sélectionnant : Git bash from here. Puis tapez : touch .gitkeep

103voto

Nevik Rehnel Points 5446

Dans Git, vous ne pouvez pas commiter des dossiers vides, car Git ne sauvegarde pas réellement les dossiers, seulement les fichiers. Vous devrez créer un fichier de remplacement à l'intérieur de ces répertoires si vous voulez qu'ils soient "vides" (c'est-à-dire que vous n'avez pas de contenu à livrer).

57voto

ddotsenko Points 2036

C'est facile.

dire à .gitignore pour ignorer tout sauf .gitignore et les dossiers que vous voulez conserver. Mettez .gitignore dans les dossiers que vous voulez garder dans le repo.

Contenu de l'élément le plus haut .gitignore :

# ignore everything except .gitignore and folders that I care about:
*
!images*
!.gitignore

Dans la partie imbriquée images c'est votre .gitignore :

# ignore everything except .gitignore
*
!.gitignore

Notez que vous devez préciser dans le .gitignore les noms des dossiers que vous ne voulez pas ignorer dans le dossier où se trouve ce .gitignore. Sinon, ils sont, évidemment, ignorés.

Vos dossiers dans le repo ne seront, évidemment, PAS vides, car chacun d'entre eux aura .gitignore mais cette partie peut être ignorée. :)

38voto

emj365 Points 194

Créer récursivement des fichiers .gitkeep

find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \;

7voto

Karl Nicoll Points 5915

Traditionnellement, à chaque fois que je veux valider une structure de répertoires vide, je crée la structure et ensuite, dans les répertoires feuilles, je place un fichier vide appelé empty.txt .

Ensuite, quand je mets des choses qui sont prêtes à être livrées, je peux simplement enlever la balise empty.txt et de livrer les fichiers réels.

c'est-à-dire

  • données/
    • images/
      • vide.txt

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X