J'ai un fichier gitignore qui fait que git ignore les *.dll
fichiers, et c'est en fait le comportement que je veux. Cependant, si je veux une exception (c'est-à-dire pouvoir s'engager foo.dll
), comment puis-je y parvenir?
J'ai un fichier gitignore qui fait que git ignore les *.dll
fichiers, et c'est en fait le comportement que je veux. Cependant, si je veux une exception (c'est-à-dire pouvoir s'engager foo.dll
), comment puis-je y parvenir?
Réponses:
Utilisation:
*.dll #Exclude all dlls
!foo.dll #Except for foo.dll
De gitignore :
Un préfixe optionnel! ce qui annule le motif; tout fichier correspondant exclu par un modèle précédent sera à nouveau inclus. Si un modèle annulé correspond, cela remplacera les sources de modèles de priorité inférieure.
*.dll
, et le gitignore de mon projet en a !Libs/*.dll
mais cela ne semble pas fonctionner.
!Libs/**/*.dll
.
!**/Libs/*.dll
, selon la structure des dossiers.
!foo.dll
la commande a invalidé la commande. Si j'ajoute le commentaire sur une ligne séparée, cela fonctionne.
Git ignore les dossiers si vous écrivez:
/js
mais il ne peut pas ajouter d'exceptions si vous le faites:
!/js/jquery
ou !/js/jquery/
ou!/js/jquery/*
Vous devez écrire:
/js/*
et seulement alors vous pouvez exclure des sous-dossiers comme celui-ci
!/js/jquery
!/js/jquery/xyzlib
, ne sera pas ignoré ...
/js/*
, !/js/jquery
, /js/jquery/*
, !/js/jquery/xyzlib
? C'est une façon plutôt drôle de le faire ...
Vous pouvez simplement git add -f path/to/foo.dll
.
.gitignore
ignore uniquement les fichiers pour le suivi habituel et des trucs comme git add .
-f
git indique de forcer l'ajout de ce fichier dans le référentiel car il pourrait l'ignorer en premier à cause de votre.gitignore
Pour exclure tout dans un répertoire, mais certains sous-répertoires, procédez comme suit:
wp-content/*
!wp-content/plugins/
!wp-content/themes/
Source: https://gist.github.com/444295
Ajoutez juste !
avant une règle d'exclusion.
Selon la page de manuel de gitignore :
Les motifs ont le format suivant:
...
- Un préfixe optionnel! ce qui annule le motif; tout fichier correspondant exclu par un modèle précédent sera à nouveau inclus. Si un modèle annulé correspond, cela remplacera les sources de modèles de priorité inférieure.
!foo.dll
dans .gitignore, ou (à chaque fois!) git add -f foo.dll
Si vous travaillez avec Visual Studio et que votre fichier .dll se trouve dans un bin
dossier, vous devrez ajouter une exception pour le dossier bin particulier lui-même, avant de pouvoir ajouter l'exception pour le fichier .dll. Par exemple
!SourceCode/Solution/Project/bin
!SourceCode/Solution/Project/bin/My.dll
Cela est dû au fait que le .gitignore
fichier Visual Studio par défaut inclut un modèle d'ignorance pour[Bbin]/
Ce modèle zappe tous les dossiers bin (et par conséquent leur contenu), ce qui rend toute tentative d'inclure le contenu redondant (car le dossier lui-même est déjà ignoré).
J'ai pu trouver pourquoi mon fichier n'était pas exclu en exécutant
git check-ignore -v -- SourceCode/Solution/Project/bin/My.dll
à partir d'une fenêtre Git Bash. Cela a renvoyé le [Bbin]/
modèle.
La solution dépend de la relation entre la règle git ignore et la règle d'exception:
Fichiers / Fichiers à différents niveaux ou Fichiers / Sous-dossiers: vous pouvez le faire:
*.suo
*.user
*.userosscache
*.sln.docstates
# ...
# Exceptions for entire subfolders
!SetupFiles/elasticsearch-5.0.0/**/*
!SetupFiles/filebeat-5.0.0-windows-x86_64/**/*
# Exceptions for files in different levels
!SetupFiles/kibana-5.0.0-windows-x86/**/*.suo
!SetupFiles/logstash-5.0.0/**/*.suo
Depuis Git 2.7.0, Git prendra en compte les exceptions. D'après les notes de version officielles:
- Autoriser un "! / Abc / def" ultérieur à remplacer un "/ abc" précédent qui apparaît dans le même fichier .gitignore pour faciliter l'expression "tout dans le répertoire / abc est ignoré, à l'exception de ...".
https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.7.0.txt