Je souhaite ignorer tous les fichiers de mon référentiel, à l'exception de ceux figurant dans le sous-répertoire bin
. J'ai essayé d'ajouter ce qui suit à mon .gitignore
:
*
!bin/*
Cela n'a cependant pas l'effet souhaité: j'ai créé un nouveau fichier à l'intérieur de bin/
, Mais faire git status
Montre toujours nothing to commit (working directory clean)
.
Aucune suggestion?
Ceci ignore les fichiers racine et les répertoires racine, puis annule le répertoire racine bin:
/*
/*/
!/bin/
De cette façon, vous obtenez tout le répertoire bin, y compris les sous-répertoires et leurs fichiers.
Ici, comment ignorer tout sauf un répertoire "MY_SUPER_DUPER_TEMPLATE_directory" dans certains répertoires
Structure:/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory
/*
!/bitrix
/bitrix/*
!/bitrix/templates
/bitrix/templates/*
!/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory
*.DS_Store
*.gitignore
Vous devez tout exclure sur le chemin menant aux destinations, mais vous devez inclure les destinations:
Remarque: il s'agit d'un fichier d'exclusion (c'est-à-dire .gitignore), la logique est donc inversée. Ignorer tout, sauf le répertoire tsp, ignorer tout dans le répertoire tsp, sauf le répertoire src ...
/*
!/tsp
/tsp/*
!/tsp/src
/tsp/src/*
!/tsp/src/*.h
!/tsp/src/*.cpp
!/tsp/src/data.txt
!/.gitignore
Le seul problème que vous avez est que le répertoire bin
lui-même ne correspond pas au répertoire bin/*
motif pour que git ne regarde même pas dans le répertoire bin
.
Deux solutions nous viennent à l’esprit.
.gitignore
:
*
!/bin/
!bin/*
ou
.gitignore
:
*
!/bin/
bin/.gitignore
:
!*
Je préfère la deuxième solution car la première solution ne cessera pas d'ignorer les fichiers du répertoire bin
qui se trouvent dans des sous-répertoires qui ne s'appellent pas bin
. Cela peut ou peut ne pas avoir d'importance dans votre situation.
L'officiel git doc , un des exemples dit:
Exemple pour tout exclure sauf un répertoire spécifique foo/bar (notez le/* - sans la barre oblique, le caractère générique exclurait également tout ce qui se trouve dans foo/bar):
$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
Pour une explication sur la barre oblique suivante: Quand utiliser la barre oblique principale dans gitignore .
Essayez de suivre la dernière version de GIT.
*
!*/
!/path/to/your/dir/**
Je pense qu'un meilleur moyen serait d'ancrer chaque modèle dans le répertoire git en commençant par le slash:
/*
!/public_html
!/.gitignore
Au lieu d'ignorer tous les fichiers, seuls les fichiers de niveau supérieur seront ignorés, pas ceux du répertoire que vous ne souhaitez pas ignorer.
Cette .gitignore
travaille pour moi:
*/
/*
!bin/
essayez cet obscur bug git.
!bin**/**
J'espère que ça aide :)
Documents de support exemple de bogue git
PS: essayez-le avant de commenter.