Ignorer les répertoires dans Git repos sous Windows
Question
Comment puis-je ignorer les répertoires ou les dossiers dans Git à l'aide de msysgit sous Windows?
La solution
Créez un fichier nommé .gitignore
dans le répertoire de votre projet. Ignorer les répertoires en entrant le nom du répertoire dans le fichier (avec une barre oblique ajoutée):
dir_to_ignore/
Plus d'infos ici .
Autres conseils
Par défaut, l'explorateur Windows affiche .gitignore
alors qu'en réalité le nom du fichier est .gitignore.txt
Git n'utilisera pas .gitignore.txt
Et vous ne pouvez pas renommer le fichier en .gitignore
car l'explorateur considère qu'il s'agit d'un fichier de type gitignore sans nom.
Solution non en ligne de commande:
You can rename a file to ".gitignore." and it will create ".gitignore"
Il semble que pour ignorer les fichiers et les répertoires, il existe deux manières principales:
-
.gitignore
- Placement du fichier
.gitignore
dans la racine du référentiel à côté du dossier.git
(sous Windows, assurez-vous de voir la vraie extension de fichier , puis faire.gitignore.
(avec le point à la fin pour créer une extension de fichier vide)) - Création de la configuration globale
~ / .gitignore_global
et exécution degit config --global core.excludesfile ~ / .gitignore_global
pour ajouter cela à votre configuration git
remarque: les fichiers suivis auparavant peuvent être décompressés en exécutant
git rm --cached filename
- Placement du fichier
-
Exclusion de reprise : pour les fichiers locaux qu'il n'est pas nécessaire de partager, vous ajoutez simplement le modèle de fichier ou le répertoire au fichier
.git / info / exclude Ces règles ne sont pas validées. Par conséquent, ne sont pas vues par les autres utilisateurs , pour plus d'informations. ici
[mise à jour] Pour créer des exceptions dans la liste des fichiers ignorés, consultez cette question .
J'ai eu quelques problèmes lors de la création d’un fichier dans Windows Explorer avec un fichier. au début.
Une solution de contournement consistait à accéder à la commande et à créer un nouveau fichier à l'aide de "modifier"
. pour indiquer à GIT d’ignorer certains fichiers ou dossiers, vous devez créer le fichier .gitignore
.
mais dans l'explorateur Windows, vous devez donner un nom au fichier, vous ne pouvez pas créer de fichier avec une simple extension, l'astuce consiste à créer un fichier texte vide, à accéder à l'invite de commande et à changer le nom du fichier en .gitignore
ren "New Text Document.txt" .gitignore
maintenant ouvrez le fichier avec votre éditeur de texte favori et ajoutez les noms de fichiers / dossiers que vous souhaitez ignorer. vous pouvez également utiliser des caractères génériques comme celui-ci *. txt
espérons que cela répond à votre question
Si vous souhaitez conserver un dossier et non les fichiers qu'il contient, insérez simplement un " .gitignore " fichier dans le dossier avec " * " en tant que contenu. Ce fichier ignorera tout le contenu du référentiel. Mais .gitignore
sera inclus dans votre référentiel.
$ git add path/to/folder/.gitignore
Si vous ajoutez un dossier vide, vous recevez ce message (.gitignore est un fichier caché)
The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added
Donc, utilisez "-f". forcer ajouter:
$ git add path/to/folder/.gitignore -f
Sous Windows, les barres obliques constituent un obstacle supplémentaire. Exclure un seul répertoire dans .gitignore avec
dir_to_exclude /
fonctionnera éventuellement, mais en excluant tous les répertoires avec
/
provoque des problèmes lorsque vous avez des noms de fichiers avec des espaces (comme mon fichier.txt
) dans votre répertoire: Git bash échappe à ces espaces avec une barre oblique inverse (comme mon \ fichier.txt
) et Git pour Windows ne fait pas la distinction entre /
et \
.
Pour exclure tous les répertoires, mieux utiliser:
** /
Deux astérisques consécutifs signifient le contenu du répertoire.
Également dans votre répertoire de projets \. git \ info
, vous trouverez un fichier d'exclusion qui correspond à la même chose que .gitignore
(je pense). Vous pouvez ajouter des fichiers et des répertoires à ignorer.
Pour ignorer un répertoire entier dans git, le moyen le plus simple consiste à inclure un fichier .gitignore dans le répertoire cible qui contient simplement "* *"
.Un exemple illustratif,
Exemple de système
/root/
.gitignore
/dirA/
someFile1.txt
someFile2.txt
/dirB/
.gitignore
someFile3.txt
someFile4.txt
Objectif
- ignore le contenu de / dirB /
Top Level .gitignore (/root/.gitignore)
- C’est là que se trouvent vos informations standard Gitignore
Répertoire ignoré .gitignore (/root/dirB.gitignore)
- Ce fichier se lit simplement comme '*' et le répertoire est complètement ignoré, ainsi que tous les fichiers!
et c'est aussi simple que cela:)
Au cas où vous auriez besoin d'exclure des sous-dossiers, vous pouvez utiliser le caractère générique **
pour exclure tout niveau de sous-répertoire.
**/build/output/Debug/
J'ai eu quelques problèmes à faire en sorte que git récupère le fichier .gitignore sous Windows. Cependant, le fichier $ GIT_DIR / info / exclude semble toujours fonctionner. L'inconvénient de cette approche, toutefois, est que les fichiers du répertoire $ GIT_DIR ne sont pas inclus dans l'enregistrement, et donc non partagés.
(p.s. $ GIT_DIR est généralement le dossier caché nommé .git)
Vous pouvez créer le " .gitignore " fichier avec le contenu:
*
!.gitignore
Cela fonctionne pour moi et pour les simples.
Lorsque tout le reste échoue , essayez de modifier le fichier
./. git / info / exclude
et en ajoutant les répertoires que vous voulez à la fin du fichier, comme ceci:
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/
J'ai ajouté les dossiers "Actifs". et " compilé " à la liste des fichiers et des répertoires à ignorer.
Je suppose que le problème est que votre arbre de travail ressemble à ceci:
a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore
... avec le .gitignore
que vous décrivez. Cela vous donnera le statut de git
comme:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
# a-cache/
# b-cache/
... si les fichiers index.html
n'ont pas encore été ajoutés au référentiel. (git voit qu'il y a des fichiers non marqués dans les répertoires de cache, mais ne signale que les répertoires.) Pour résoudre ce problème, assurez-vous d'avoir ajouté et validé les fichiers index.html
:
git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"
... et votre statut de git
ressemblera alors à:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
nothing added to commit but untracked files present (use "git add" to track)
(Évidemment, vous voulez aussi valider .gitignore
, j'étais juste paresseux avec ce scénario de test.)
Sous Unix:
touch .gitignore
Sous Windows:
echo > .gitignore
Ces commandes exécutées dans un terminal créeront un fichier .gitignore
à l'emplacement actuel.
Ajoutez simplement des informations à ce fichier .gitignore
(en utilisant Notepad ++ par exemple), quels fichiers ou dossiers doivent être ignorés. Enregistrez vos modifications. C'est ça:)
Plus d'informations: https://www.atlassian.com/git/ tutoriels / save-changes / gitignore
Sous Windows et Mac, si vous souhaitez ignorer un dossier nommé Flower_Data_Folder dans le répertoire actuel, vous pouvez procéder comme suit:
echo Flower_Data_Folder > > .gitignore
S'il s'agit d'un fichier nommé data.txt
echo data.txt > > .gitignore
si c'est un chemin comme "Data / passwords.txt"
echo " Data / passwords.txt " > > .gitignore.
J'ai eu des problèmes similaires, je travaille sur une chaîne d’outils Windows avec un référentiel partagé avec les gars de Linux, ils créent heureusement des fichiers avec les mêmes noms (sauf les cas) dans un dossier donné.
L’effet est que je peux cloner le référentiel et avoir immédiatement des dizaines de fichiers «modifiés» qui, si j’étais en enregistrement, créeraient des dégâts.
J'ai Windows configuré pour sensible à la casse et git pour ne pas ignorer la casse mais cela échoue quand même (dans les appels de l'API Win32 apparemment).
Si je gitignore les fichiers, je dois me rappeler de ne pas suivre le fichier .gitignore.
Mais j'ai trouvé une bonne réponse ici http: // archive .robwilkerson.org / 2010/03/02 / git-tip-ignorer-les-modifications-aux-fichiers-suivis / index.html
Chris