web-dev-qa-db-fra.com

Commit une structure de dossier vide (avec git)

J'ai un répertoire de données à la racine du projet. Il a un répertoire d'images et des fichiers. Voici un exemple:

  • les données/
    • images/
      • image1.jpg
      • image2.jpg
      • image2.jpg
    • résultats.csv
    • r.txt

Que faut-il écrire dans gitignore, pour ignorer les fichiers du répertoire data/(résultats.csv et r.txt) et ceux du répertoire images/(image.jpg, image2.jpg, image3.jpg)?

Quand je le commets, la structure de dossier dans le référentiel devrait être:

  • les données/
    • images/

Donc, je veux juste que la structure de dossiers vides soit validée.

65

Dans Git, vous ne pouvez pas valider de dossiers vides, car Git ne sauvegarde pas de dossiers, mais uniquement des fichiers. Vous devrez créer un fichier d’espace réservé à l’intérieur de ces répertoires si vous voulez réellement qu’ils soient "vides" (c’est-à-dire que vous n’avez pas de contenu validable).

85
Nevik Rehnel

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

Sous Windows, faites-le en cliquant avec le bouton droit de la souris dans le dossier et sélectionnez: Git bash d'ici. Puis tapez: touch .gitkeep

107
Joost van der Laan

C'est facile.

dire .gitignore ignorer tout sauf .gitignore et les dossiers que vous souhaitez conserver. Mettez .gitignore dans les dossiers que vous souhaitez conserver dans le référentiel.

Contenu du plus haut .gitignore:

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

Dans le dossier imbriqué images, il s'agit de votre .gitignore:

# ignore everything except .gitignore
*
!.gitignore

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

Vos dossiers dans le référentiel ne seront évidemment PAS vides, car chacun aura .gitignore _, mais cette partie peut être ignorée, non. :)

48
ddotsenko

Créer récursivement des fichiers .gitkeep

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

Traditionnellement chaque fois que je voulais valider et vider la structure de répertoires, je crée la structure puis, dans les répertoires feuille, place un fichier vide appelé empty.txt.

Ensuite, lorsque je mets des éléments prêts à être utilisés, je peux simplement retirer le empty.txt file et valide les fichiers réels.

c'est à dire.

  • les données/
    • images/
      • empty.txt
7
Karl Nicoll

Pensez aussi à ne faire que mkdir -p data/images dans votre Makefile, si le répertoire doit être présent pendant la construction.

Si cela ne suffit pas, créez simplement un fichier vide dans data/images et ignorez les données.

touch data/images/.gitignore
git add data/images/.gitignore
git commit -m "Add empty .gitignore to keep data/images around"
echo data >> .gitignore
git add .gitignore
git commit -m "Add data to .gitignore"
4
Kalle Pokki

Vous pouvez faire un commit vide avec git commit --allow-empty, mais cela ne vous permettra pas de valider une structure de dossiers vide car git ne sait pas s’occuper des dossiers en tant qu’objets eux-mêmes, mais uniquement des fichiers qu’ils contiennent.

3
David Culp

Ajoutez simplement un fichier nommé .keep dans le dossier images. Vous pouvez maintenant créer et valider et ajouter un dossier au contrôle de version.

Créer un fichier vide dans le dossier images $ touch .keep

$ git status

 Sur branche master 
 Votre branche est à jour avec 'Origine/master'. 
 
 Fichiers non suivis: 
 (Utilisez "git add ... "à inclure dans ce qui va être commis) 
 
 images /

 rien n'est ajouté pour commettre mais des fichiers non suivis sont présents (utilisez" git add "à Piste)

$ git add .

$ git commit -m "adding empty folder"

1
Nayagam

Selon leur FAQ, GIT ne suit pas les répertoires vides.

FAQ Git

Toutefois, il existe des solutions de contournement en fonction de vos besoins et des exigences de votre projet.

En gros, si vous voulez suivre un répertoire vide, vous pouvez placer un .gitkeep fichier ici. Le fichier peut être vide et cela fonctionnera simplement. C’est une façon pour Gits de suivre un répertoire vide.

Une autre option consiste à fournir de la documentation pour le répertoire. Vous pouvez simplement y ajouter un fichier readme décrivant son utilisation prévue. Git suivra le dossier car il contient un fichier et vous avez à présent fourni de la documentation à vous-même et/ou à quiconque utilisant le code source.

Si vous construisez une application Web, vous trouverez peut-être utile d'ajouter simplement un fichier index.html pouvant contenir un message d'autorisation refusée si le dossier n'est accessible que par l'application. Codeigniter le fait avec tous leurs répertoires.

1
JoeMoe1984