2010-09-03 6 views
251

Je suis conscient d'utiliser le fichier .gitignore pour exclure certains fichiers ajoutés, mais j'ai plusieurs fichiers config.php dans l'arborescence source et je dois en exclure un seul, situé dans la racine tandis que d'autres garder sous contrôle de révision.Comment exclure le fichier seulement du dossier racine dans Git

Ce que je devrais écrire dans .gitignore pour que cela se produise?

Répondre

382

De l'documentation:

Si le motif ne contient pas de barre oblique /, git le traite comme un motif glob shell et vérifie un match contre le chemin par rapport à l'emplacement du fichier .gitignore (par rapport au toplevel de l'arbre de travail si ce n'est pas à partir d'un fichier .gitignore).

Une barre oblique correspond au début du chemin d'accès. Par exemple, "/*.c" correspond à "cat-file.c" mais pas à "mozilla-sha1/sha1.c".

Vous devez ajouter la ligne suivante à la racine de votre .gitignore:

/config.php 
+1

Merci! J'ai essayé de cette façon, mais pour une raison quelconque, cela n'a pas fonctionné. Probablement mal tapé quelque chose quelque chose =) –

+1

Que faire si ce n'est pas un fichier, mais un dossier, et je veux ignorer ce dossier dans la racine repo, ses fichiers contenus et tous les sous-dossiers descendants et leurs fichiers? '/ dossier /'? – CoDEmanX

+3

Soit '/ dossier /' ou '/ dossier' fonctionnerait, mais l'ajout de la barre oblique à la fin limite la correspondance aux dossiers uniquement. Si vous aviez un fichier nommé 'foo' dans le répertoire racine, '/ foo /' ne l'ignorerait pas, mais '/ foo' le ferait. – tehDorf

64

Utilisez /config.php.

8

Si la solution ci-dessus ne fonctionne pas pour vous, essayez ceci:

#1.1 Do NOT ignore file pattern in any subdirectory 
!*/config.php 
#1.2 ...only ignore it in the current directory 
/config.php 

########################## 

# 2.1 Ignore file pattern everywhere 
config.php 
# 2.2 ...but NOT in the current directory 
!/config.php 
15

Les versions plus anciennes de git nécessite vous définissez d'abord un motif ignoré et immédiatement (sur la ligne suivante) définissez l'exclusion. [Testé sur la version 1.9.3 (Apple Git-50)]

/config.php 
!/*/config.php 

Les versions ultérieures ne nécessitent que les éléments suivants [testé sur la version 2.2.1]

/config.php 
Questions connexes