J'ai récemment commencé à utiliser Git et j'ai des problèmes avec une seule chose. Comment puis-je suivre des répertoires sans suivre leur contenu?
Par exemple, le site sur lequel je travaille autorise les téléchargements. Je veux suivre le répertoire des téléchargements afin qu'il soit créé lors de la création de branches, etc. mais évidemment pas les fichiers qu'il contient (fichiers de test pendant le développement de la branche ou les vrais fichiers en master).
Dans mon .gitignore, j'ai les éléments suivants:
télécharge /*.*
J'ai également essayé (qui ignore tout le répertoire):
téléchargements /
Ce répertoire peut également contenir des sous-répertoires (uploads/thumbs/uploads/videos /) Je voudrais pouvoir suivre ces derniers mais pas leurs fichiers.
Est-ce possible avec Git? J'ai cherché partout sans trouver de réponse.
Git ne suit pas les répertoires, il suit les fichiers, donc pour y parvenir, vous devez suivre au moins un fichier. En supposant que votre .gitignore
le fichier ressemble à ceci:
upload/*
Tu peux le faire:
$ touch upload/.placeholder
$ git add -f upload/.placeholder
Si vous oubliez le -f
tu verras:
$ git add upload/.placeholder Les chemins suivants sont ignorés par l'un de vos fichiers .gitignore: upload Utilisez -f si vous voulez vraiment ajouter fatal: aucun fichier ajouté
Ensuite, lorsque vous faites git status
tu verras:
# Sur le maître de succursale # # Validation initiale # # Modifications à valider: # (Utiliser "git rm --cached ... "to unstage) # # nouveau fichier: upload/.placeholder #
Évidemment, vous pouvez alors faire:
$ touch upload/images/.placeholder
$ git add -f upload/images/.placeholder
J'ai écrit à ce sujet ici .
Ajoutez un .gitignore dans le répertoire.
La meilleure réponse que j'ai trouvée consiste à inclure un fichier .gitignore dans votre dossier de téléchargement avec ce contenu
# Ignore everything in this directory
*
# Except this file
!.gitignore
Ici, vous avez Comment puis-je ajouter un répertoire vide à un référentiel Git?
La meilleure solution à ce jour:
1) Créez un fichier . Gitignore
2) Écrivez à l'intérieur:
*
*/
!.gitignore
3) Ajoutez le fichier .gitignore dans le dossier souhaité.
Afin de suivre uniquement les répertoires mais pas les fichiers, j'ai fait ce qui suit. Grâce au commentaire de @ PeterFarmer sur le suivi des fichiers uniquement par git, j'ai pu conserver tous les répertoires à l'exception des fichiers comme décrit ci-dessous.
# exclude everything in every folder
/data/**/*.*
# include only .gitkeep files
!/data/**/*.gitkeep
L'ajouter au fichier .gitignore fera le travail. Voici ma structure de dossiers.
data/
├── processed
│ ├── dataset1.csv
│ └── dataset2.csv
├── raw
│ ├── raw_dataset1.json
└── test
├── subfolder
│ └── dataset2.csv
└── reviews.csv
Quand je fais git add . && git status
, git ne reconnaît que les dossiers, mais pas les fichiers.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: .gitignore
new file: data/processed/.gitkeep
new file: data/raw/.gitkeep
new file: data/test/.gitkeep
new file: data/test/subfolder/.gitkeep
Gardez à l'esprit que ce qui suit pour vos fichiers .gitignore:
La barre oblique en attente ne recherche que le répertoire racine.
/ dir
Le double astérisque recherche zéro ou plusieurs répertoires.
/ ** /