Mon problème est que j'ai un tas de sites Web WordPress dans mon repo git, dont je veux ne valider sélectivement que le contenu de mes themes
dossiers, tout en ignorant le reste des fichiers redondants trouvés dans WordPress.
J'ai déjà utilisé des fichiers .gitignore pour ignorer les types de fichiers, mais peut-il être utilisé dans l'autre sens - c'est-à-dire pour tout ignorer MAIS un certain chemin de dossier?
root (git repo)
- / wordpress
- - / (WordPress Site 1) / wp-content / themes
- - / (WordPress Site 2) / wp-content / themes
- - / (WordPress Site 3) / wp-content / themes
Merci-
METTRE À JOUR:
Sur la base des réponses, j'ai fait ce qui suit, mais cela ne fonctionne pas. Des idées?
# Ignore everything:
*
# Except for wordpress themes:
!*/wp-content/themes/*
J'ai également essayé les variantes suivantes:
!*/wp-content/themes*
!*wp-content/themes/*
!wp-content/themes/*
!/wordpress/*/wp-content/themes*
!wordpress/*/wp-content/themes*
Aucun de ceux-ci ne lit mes themes
dossiers.
**
joker ne fonctionne que si vous n'avez pas de barres obliques dans votre modèle, voir sparethought.wordpress.com/2011/07/19!/wordpress/*/wp-content/themes/**/*
J'ai essayé ce qui précède et ils n'ont pas si bien fonctionné. Une meilleure approche est la suivante à partir d'ici: https://gist.github.com/444295
la source
modifier la première ligne
changez-le en
la source
Essayez ces réponses:
la source
!*/wp-content/themes/
et!*/wp-content/themes/*
. Avez-vous essayé cette variante? De plus, comme alternative, vous pouvez simplement utiliser!*/wp-content/themes/
et dans chaque répertoire de thèmes avoir son propre fichier .gitignore avec!*
!*/wp-content/themes*
Si vous préfixez un modèle avec un point d'exclamation (
!
), il annule tout modèle précédent qui l'a exclu. Donc, vraisemblablement, vous pouvez tout ignorer, puis n'autoriser que ce que vous voulez en utilisant ce modèle.la source
!wordpress/[write out directories]/wp-content/themes/
. Notez la barre oblique de fermeture et aucun astérisque de fermeture. Notez également que*
ne correspondra qu'à un seul niveau, pas à plusieurs répertoires. Voici la page de manuel: kernel.org/pub/software/scm/git/docs/gitignore.htmlJ'avais besoin d'ignorer tout mais pas un dossier avec des sous-répertoires.
Pour moi, cela fonctionne
la source
Supposons que vous ayez une structure de répertoires comme celle-ci:
Quand tu veux autoriser uniquement les sites / all / files / private / newspilot et sites / default / files / private / newspilot , vous pouvez, dans un premier temps, essayer ceci:
C'est faux!Le problème avec gitignore est que vous devez d'abord autoriser l'inclusion du répertoire parent ("private") , avant de pouvoir autoriser son répertoire enfant ("newspilot") à être inclus dans les commits.
http://www.christianengvall.se/gitignore-exclude-folder-but-include-a-subfolder/
la source
La réponse de Yarin a fonctionné pour moi, voici ma version (je n'ai pas besoin du
/wordpress
sous-répertoire):la source
Je reste toujours coincé quelque part là-dessus même après être revenu sur cette question à plusieurs reprises. J'ai mis au point un processus détaillé pour le faire étape par étape:
Utilisez
git add
d' abord simplement pour ajouter le contenu réel.Il affichera les fichiers pertinents ajoutés à l'index tandis que tous les autres ne sont toujours pas suivis. Cela aide à construire
.gitignore
étape par étape.Ajoutez un
DUMMY.TXT
fichier temporaire dans votre répertoire:Notre objectif est maintenant de construire les règles de telle sorte que ce
DUMMY.TXT
soit la seule qui apparaisse encore comme Non suivi lorsque nous avons terminé.Commencez à ajouter les règles:
.gitignore
La première consiste simplement à tout ignorer. Les fichiers non suivis devraient tous avoir disparu, seuls les fichiers indexés devraient être affichés:
Ajouter le premier répertoire dans le chemin
wp-content
Maintenant, les fichiers non suivis réapparaîtront, mais n'ont que
wp-content
le contenu deIgnorer tout ce qui se trouve dans le premier répertoire
/wp-content/*
et désignorer!/wp-content/themes
Désormais, les fichiers non suivis seront réduits à seulement
wp-content/themes
Répétez le processus jusqu'à ce que ce fichier factice soit le seul à être encore affiché comme non suivi:
la source
Pour ceux qui recherchent une solution plus propre , veuillez essayer ce qui suit.
Comme mentionné dans les commentaires de cette réponse, vous devez utiliser cette méthode de manière récursive.
Dans cet exemple, vous avez une configuration de site Web à l'
./
endroit où se trouvent votre.git
dossier et.gitignore
fichier et une configuration d'installation de WordPress dans./wordpress
. Pour ignorer correctement tout ce qui se trouve dans le./wordpress
répertoire à l' exception du répertoire de thème lui-même (wordpress/wp-content/themes/my-theme
), vous devrez ignorer et autoriser récursivement chaque répertoire jusqu'au répertoire que vous souhaitez autoriser:La raison d'ignorer avec un joker et d'autoriser (ou d'ignorer «en dehors de») le répertoire lui-même permet à Git de regarder d'abord à l'intérieur du répertoire avant d'ignorer tout ce qu'il contient. Nous disons ensuite à Git d'ignorer tout «à part» du répertoire que nous avons spécifié. Voici la même syntaxe mais dans l'ordre de la façon dont Git le regarde:
Espérons que cela aide quelqu'un à mieux comprendre la nécessité de la méthode récursive.
la source
en retard à la fête mais voici ce que j'utilise pour une profondeur inconnue (la solution acceptée nécessite une profondeur connue)
de cette façon, tout sous wp-content n'est pas ignoré.
la source
Après avoir eu besoin de cela plusieurs fois, j'ai enfin trouvé une solution [1]:
Explication ligne par ligne:
.gitignore
(et potentiellement.gitattributes
).[1] Limitations (dont je suis conscient):
/*
casserait tout le schéma).wordpress
dans ce cas) ne peut pas avoir.
dans le nom (par exemplewordpress.1
ne fonctionnerait pas). S'il a un.
, supprimez la ligne 2 et trouvez un autre moyen d'exclure tous les fichiers à la racine.git version 2.17.1.windows.2
la source
Une autre solution simple:
Vous souhaitez ignorer tous les fichiers Wordpress, mais pas votre thème (par exemple).
.gitignore , le contenu est:
Dans cet exemple, vous pouvez supprimer wordpress si .gitignore est dans le répertoire racine de wordpress
Vous pouvez faire exactement la même chose avec tous les dossiers et contenus que vous souhaitez "exceptionnellement" garder hors des dossiers / fichiers gitignored
Conclusion :
MAIS
la source
Vous pouvez essayer ceci:
Où :
la source
Voici ma solution, qui suppose un paiement en
wp-content
et test:
donc il ignore correctement tout ce que je ne veux pas et rien que je veux garder.
Code de libération
Gitlab est configuré avec des miroirs de référentiel pour les branches protégées, selon https://docs.gitlab.com/ee/workflow/repository_mirroring.html
Lorsque le code est poussé vers une branche protégée, il est mis en miroir sur les serveurs de transfert et de production dans le
/opt/checkout/repo.git/
référentiel nu. Lepost-receive
hook suivant (in/opt/checkout/repo.git/hooks/post-receive
) extraira alors le code dans le répertoire de travail.Pour plus d'informations, voir https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps
la source
Voici comment je l'ai fait:
C'est ce qui a fonctionné pour moi. Vous permet d'ignorer tout sauf des fichiers ou des dossiers spécifiques
macOS sierra
la source
Je suis dans le même bateau en essayant de gérer un tas de sites Wordpress sous un référentiel. Ma structure de répertoires ressemble à ceci:
Je veux simplement suivre les éléments à l'intérieur du
app/public
dossier pour chaque site. J'ai essayé les exemples de cette page ainsi que certaines des suggestions ici et j'ai fini par essayer ceci:qui a fonctionné mais je devrais ignorer le même chemin pour chaque site que j'essayais d'éviter.
Ensuite, je viens de remplacer le nom du site par
*
et cela a fait l'affaire pour moi. Voici donc ce que j'ai fini par utiliser:Cela a effectivement ignoré tout dans le dossier du site tout en capturant tout dans le
app/public
dossier pour tout site que je crée à la racine.Notez qu'il n'ignore pas les fichiers à la racine, juste les répertoires :)
J'espère que cela t'aides.
la source
C'est le seul fichier qui est ignoré dans la plupart des cas, car vous avez wp-config-sample.php que vous pouvez partager avec d'autres.
la source