À l'aide de .gitignore de tout ignorer, mais les répertoires spécifiques
Mon problème est que j'ai un tas de sites WordPress dans mon repo git, de qui je veux à s'engager de manière sélective uniquement le contenu de mon themes
dossiers, tout en ignorant le reste de la redondante fichiers trouvés dans WordPress.
Que j'ai utilisé .gitignore fichiers à ignorer les types de fichiers avant, mais peut-il être utilisé dans l'autre sens - c'est-à ignorent tout, MAIS un certain chemin d'accès au dossier?
racine (repo git)
- /wordpress
- - /(Site WordPress 1)/wp-content/themes
- - /(Site WordPress 2)/wp-content/themes
- - /(Site WordPress 3)/wp-content/themes
Grâce-
Mise à JOUR:
Sur la base des réponses, je n'ai la suite, mais cela ne fonctionne pas. Des idées?
# Ignore everything:
*
# Except for wordpress themes:
!*/wp-content/themes/*
J'ai aussi essayé les variations suivantes:
!*/wp-content/themes*
!*wp-content/themes/*
!wp-content/themes/*
!/wordpress/*/wp-content/themes*
!wordpress/*/wp-content/themes*
Aucun de ces lire mon themes
dossiers.
Vous devez vous connecter pour publier un commentaire.
Voici comment je l'ai fait, vous avez à pied les chemins, vous ne pouvez pas le générique plus d'un niveau dans toutes les directions:
Remarquez comment vous avez pour autoriser explicitement le contenu de chaque niveau que vous souhaitez inclure. Donc, si j'ai les sous-répertoires 5 de profondeur sous thèmes, j'ai encore besoin de le préciser.
Ce n'est que la façon dont il a travaillé pour moi. Si quelqu'un se soucie d'offrir une meilleure connaissance de l'explication par tous les moyens.
Aussi, ces réponses utiles:
comment-faire-nié-modèles-travail-en-gitignore
comment-faire-gitignore-exclusion-règles-en fait-travail
REMARQUE: j'ai essayé en utilisant le double caractère 'globs", mais selon cette que la fonctionnalité est dépendante du système et il ne fonctionne pas sur mon mac:
Ne fonctionne PAS:
**
générique seulement workds si vous n'avez pas de barres obliques dans votre modèle, reportez-vous à sparethought.wordpress.com/2011/07/19/...!/wordpress/*/wp-content/themes/**/*
J'ai essayé ci-dessus et qu'ils ne fonctionne pas si bien. une meilleure approche est comme suit à partir d'ici: https://gist.github.com/444295
modifier la première ligne
changer de
Si vous préfixe d'un motif avec un point d'exclamation (
!
), il nie tout modèle précédent qui exclu. Donc, sans doute, vous pouvez ignorer tout, puis autoriser uniquement ce que vous souhaitez à l'aide de ce modèle.!wordpress/[write out directories]/wp-content/themes/
. Avis de la barre oblique de fermeture et pas de fermeture astérisque. Notez également que*
ne correspondent, pas à plusieurs répertoires. Ici, c'est l'homme de la page: kernel.org/pub/software/scm/git/docs/gitignore.htmlEssayez ces réponses:
!*/wp-content/themes/
et!*/wp-content/themes/*
. Avez-vous essayé de la variation? Aussi, comme une alternative, vous pouvez simplement utiliser!*/wp-content/themes/
et dans chaque répertoire de thèmes avoir sa propre .gitignore fichier avec!*
!*/wp-content/themes*
Yarin réponse a fonctionné pour moi, voici ma version (je n'ai pas besoin
/wordpress
sous-répertoire):Dire que vous avez une structure de répertoire comme ceci:
Quand vous voulez autoriser uniquement les sites/all/fichiers/private/newspilot et sites/default/files/private/newspilot, vous pourriez, au premier abord, essayez ceci:
C'est faux! La chose la plus délicate avec gitignore est que vous devez d'abord autoriser le parent ("privé") annuaire à être inclus, avant de vous peut permettre à son enfant de répertoire ("newspilot") pour être inclus dans le commet.
http://www.christianengvall.se/gitignore-exclude-folder-but-include-a-subfolder/
Pour ceux qui recherchent un nettoyant solution, essayez les solutions suivantes.
Comme mentionné dans les commentaires de cette réponse, vous devez utiliser cette méthode de façon récursive.
Dans cet exemple, vous disposez d'un site d'installation à
./
où votre.git
dossier et.gitignore
fichier est situé et une installation de WordPress installation dans./wordpress
. D'ignorer correctement le tout sous le./wordpress
répertoire en dehors de le répertoire de thème lui-même (wordpress/wp-content/themes/my-theme
), vous aurez récursive de l'ignorer et de permettre à chaque répertoire jusqu'à ce que le répertoire que vous voulez autoriser:La raison de l'ignorer avec un caractère générique et permettant (ou, ignorer "à part"), le répertoire Git permet de regarder l'intérieur du répertoire d'abord, avant de l'ignorer tout à l'intérieur. Nous avons ensuite indiquer à Git d'ignorer tout", à l'exception de l'annuaire, nous avons spécifié. Voici la même syntaxe, mais dans l'ordre de comment Git est regarder:
J'espère que cela aide quelqu'un à mieux comprendre la nécessité de la méthode récursive.
la fin de la partie, mais voici ce que j'utilise profondeur inconnue (la solution retenue nécessite profondeur connue)
de cette façon, tout est sous wp-content n'est pas ignoré.
J'avais besoin de tout ignorer, mais pas un dossier avec des sous-répertoires.
Pour moi, cela fonctionne
J'ai toujours coincé quelque part sur ce même après de revenir à cette question de nombreuses fois. Je suis venu avec une description détaillée de le faire étape par étape:
D'abord juste utiliser
git add
pour ajouter le contenu réel.Il va montrer les fichiers ajoutés à l'index de tous les autres encore sans traces. Cela permet de contructing
.gitignore
étape par étape.Ajouter une temporaire
DUMMY.TXT
fichier dans votre répertoire:Notre objectif est maintenant de construire les règles de ce
DUMMY.TXT
être le seul encore en montrant que non chaînée, quand nous aurons fini.Commencer à ajouter les règles:
.gitignore
Premier est juste de tout ignorer. Sans traces de fichiers doivent être tous partis, seuls les fichiers indexés doit être visible:
Ajouter le premier dir dans le chemin d'accès
wp-content
Maintenant le sans traces de fichiers apparaîtra de nouveau, mais seulement
wp-content
's table des matièresIgnorer tout dans la première dir
/wp-content/*
et de l'onu-ignorer!/wp-content/themes
Maintenant le sans traces de fichiers va encore réduire à seulement
wp-content/themes
Répétez le processus jusqu'à ce que ce fichier factice est la seule encore en montrant que non chaînée:
Vous pouvez essayer ceci:
Où:
Après en avoir besoin pour cela de multiples reprises, j'ai enfin trouvé une solution [1]:
Explication ligne par ligne:
.gitignore
lui-même (et potentiellement.gitattributes
).[1] Limitations (que je connais):
/*
de casser l'ensemble du schéma).wordpress
dans ce cas) ne peut pas avoir.
dans le nom (par exemplewordpress.1
ne fonctionnerait pas). Si elle dispose d'une.
, puis supprimer la ligne 2 et de trouver un autre moyen pour exclure tous les fichiers à la racine.git version 2.17.1.windows.2
Voici ma solution, qui suppose une caisse en
wp-content
et de tests:
sorte correctement ignore tout, je ne veux pas et rien de ce que je veux garder.
Libérant Code
Gitlab est configuré avec le référentiel de miroirs pour les protégés de branches, selon https://docs.gitlab.com/ee/workflow/repository_mirroring.html
Lorsque le code est poussé à un circuit protégé, il sera mis en miroir à la mise en scène et production les serveurs de la
/opt/checkout/repo.git/
nu repo. La suitepost-receive
crochet (en/opt/checkout/repo.git/hooks/post-receive
) va ensuite récupérer 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
Voici comment je l'ai fait:
C'est ce qui a fonctionné pour moi. Permet d'ignorer tout sauf des fichiers ou dossiers spécifiques
macOS sierra
Je suis dans le même bateau essayer de gérer tout un tas de sites WordPress en vertu de l'un des pensions. Mon répertoire de la structure ressemble à ceci:
Je veux juste suivre les articles à l'intérieur de la
app/public
dossier pour chaque site. J'ai essayé les échantillons de cette page ainsi que certaines des suggestions et finit par tenter ceci:qui a fonctionné, mais j'aurais à ignorer le même chemin pour chaque site sur lequel j'essayais d'éviter.
Ensuite, j'ai juste remplacé le nom du site avec
*
et qui a fait le tour pour moi. C'est donc ce que j'ai fini par utiliser:Ce ignorait tout dans le site du dossier lors de la capture de tout dans le
app/public
dossier pour tout site que j'ai créer à la racine.Noter qu'il ne sera pas ignorer les fichiers dans la racine, juste répertoires 🙂
Espère que cette aide.
Une autre solution facile :
Vous souhaitez ignorer tous les fichiers WordPress, mais pas de votre thème (par exemple).
.gitignore, le contenu est :
Dans cet exemple, vous pouvez supprimer wordpress si .gitignore est dans racine du répertoire de wordpress
Vous pouvez faire exactement la même chose avec tous les dossiers et le contenu que vous voulez "exceptionnellement" garder hors de la gitignored dossiers/fichiers
Conclusion :
MAIS
C'est le seul fichier qui est ignoré dans la plupart des cas, parce que vous avez wp-config-sample.php que vous pouvez partager avec les autres.