web-dev-qa-db-fra.com

Comment exclure un fichier uniquement du dossier racine dans Git

Je suis conscient de l’utilisation du fichier .gitignore pour exclure certains fichiers, mais j’ai plusieurs fichiers config.php dans l’arborescence source et j’ai besoin d’en exclure un, situé à la racine, tandis que d’autres gardent le contrôle de révision.

Qu'est-ce que je devrais écrire dans .gitignore pour que cela se produise?

342
Pavel Karoukin

De la documentation :

Si le motif ne contient pas de barre oblique /, git le traite comme un motif global de shell et recherche une correspondance avec le chemin d'accès par rapport à l'emplacement du fichier .gitignore (par rapport au niveau supérieur de l'arbre de travail s'il ne provient pas d'un fichier .gitignore fichier).

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

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

/config.php
515
Manoj Govindan

Utilisez /config.php.

74
Richard Fearn

Les anciennes versions de git exigent que vous définissiez d’abord un motif ignorer puis immédiatement (sur la ligne suivante) la définition de 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
26
kenhowardpdx

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
14
drugan