Commettre un dossier vide de la structure (avec git)
J'ai des données-répertoire dans le répertoire racine du projet. Il a de répertoire d'images et de certains fichiers. Ici est un exemple:
- de données/
- images/
- image1.jpg
- image2.jpg
- image2.jpg
- résultats.csv
- r.txt
- images/
Quoi écrire dans gitignore, pour ignorer les fichiers de données/répertoire (c'est-à résultats.csv et r.txt) et les fichiers d'images/répertoire (image.jpg, image2.jpg, image3.jpg)?
Quand je m'engage c', la structure des dossiers dans le référentiel doit être:
- de données/
- images/
Donc, je veux juste vide de la structure de dossiers pour être engagée.
Vous devez vous connecter pour publier un commentaire.
Dans Git, vous ne pouvez pas valider les dossiers vides, parce que Git n'est pas réellement sauver des dossiers, seuls les fichiers. Vous aurez à créer de l'espace réservé fichier à l'intérieur de ces répertoires, si vous voulez vraiment être "vide" (c'est à dire vous n'avez pas de committable contenu).
Il suffit d'ajouter un fichier
.gitkeep
dans chaque dossier que vous souhaitez commis.Sur windows le faire par un clic droit lorsque dans le dossier et sélectionnez: Git bash à partir d'ici. Ensuite, tapez:
touch .gitkeep
.keep
à la place? Il est agnostique à git.git
préfixe, cependant, donne une idée de pourquoi il y a un sinon inutile de fichier vide qui traînent..git
préfixe signifie git va traiter d'une manière particulière, de sorte qu'il est source de confusion. Il serait préférable d'utiliser.keep
et à placer le texte à l'intérieur du fichier écrit en langage simple pour expliquer le but du fichier. Même si.keep
n'est pas immédiatement évident de savoir ce que cela signifie, c'est très bien que nous sommes des programmeurs après tout, et il est facile à apprendre ce que cela signifie en regardant à l'intérieur du fichier. Une fois que vous comprenez ce que ça veut dire que c'est un nom facile à retenir. Aller pour les noms qui sont à court et mémorable. Après un temps, la brièveté de la il permet à votre esprit pour traiter plus rapidement que.keep_dir_in_git
.find . -type d -exec touch {}/.gitkeep \;
C'est facile.
dire
.gitignore
de tout ignorer, sauf.gitignore
et les dossiers que vous souhaitez conserver. Mettre.gitignore
dans des dossiers que vous souhaitez conserver dans le repo.Contenu de la plus haute
.gitignore
:Dans le imbriqués
images
dossier c'est votre.gitignore
:Note, vous devez préciser dans l' .gitignore les noms des dossiers que vous ne voulez pas être ignoré dans le dossier où que .gitignore est situé. Sinon, ils sont, bien évidemment, ignoré.
Vos dossiers dans les pensions de titres pourra, bien évidemment, de ne PAS être vide, comme chacun aura
.gitignore
en elle, mais cette partie peut être ignoré, à droite. 🙂find . -type d -exec touch {}/.gitkeep \;
mais il serait bon de comprendre cette alternative, car il semble un populaire upvoted un.De manière récursive créer .gitkeep fichiers
Traditionnellement, chaque fois que j'ai voulu commettre et vides de la structure de répertoire, j'ai créer la structure, puis dans la feuille répertoires place un fichier vide appelé
empty.txt
.Puis quand je mets des trucs dans qui est prêt à s'engager, je peux simplement supprimer le
empty.txt
fichier et valider les dossiers réels.c'est à dire
.gitignore
en elle. Il remplace efficacementempty.txt
.empty
.Considérer aussi le faire juste
mkdir -p data/images
dans votre Makefile, si le répertoire doit être là lors de la construction.Si ce n'est pas assez bon, il suffit de créer un fichier vide dans data/images et d'ignorer les données.
Vous pouvez faire un vide s'engager avec
git commit --allow-empty
, mais qui ne vous permettra pas de commettre un dossier vide de la structure que git ne sais pas ou se soucient de dossiers que les objets eux-mêmes: seulement les fichiers qu'ils contiennent.Selon leur FAQ, GIT ne pas suivre les répertoires vides.
Git FAQ
Cependant, il existe des solutions de contournement en fonction de vos besoins et les besoins de votre projet.
Fondamentalement, si vous voulez suivre un répertoire vide, vous pouvez placer un
.gitkeep
fichier là. Le fichier peut être vide et le tout fonctionne. C'est Gits moyen de suivi d'un répertoire vide.Une autre option est de fournir de la documentation pour le répertoire. Vous pouvez simplement ajouter un fichier lisez-moi en décrivant son utilisation prévue. Git va suivre le dossier, car il a un fichier et que vous avez fourni les documents nécessaires pour vous et/ou toute autre personne qui pourrait être en utilisant le code source.
Si vous êtes à la construction d'une web app, vous pouvez trouver utile d'ajouter simplement un index.html fichier qui peut contenir un message de refus d'autorisation si le dossier n'est accessible que par le biais de l'application. Codeigniter le fait avec tous leurs répertoires.
Simplement ajouter un fichier nommé .garder dans le dossier d'images.vous pouvez maintenant la scène et de s'engager et aussi en mesure d'ajouter un dossier pour le contrôle de version.
Créer un fichier vide dans le dossier d'images
$ touch .keep
$ git status
$ git add .
$ git commit -m "adding empty folder"