web-dev-qa-db-fr.com

Ignorer les répertoires dans Git repos sous Windows

Comment puis-je ignorer les répertoires ou les dossiers dans Git à l'aide de msysgit sous Windows?

952
sf.

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 .

1408
stew

Par défaut, Windows Explorer affichera .gitignore en fait, le nom du fichier est .gitignore.txt.

Git n'utilisera pas .gitignore.txt

Et vous ne pouvez pas renommer le fichier en .gitignore parce qu'Explorer considère qu'il s'agit d'un fichier de type gitignore sans nom.

Solution non en ligne de commande:

Vous pouvez renommer un fichier en ".gitignore." et il va créer ".gitignore"
191
brainwavedave

Il semble que pour ignorer les fichiers et les répertoires, il y a deux manières principales:

  1. . gitignore

    • Placer le fichier .gitignore à la racine de votre référentiel en plus du dossier .git (sous Windows, assurez-vous que voir l’extension de fichier true , puis créez .gitignore. (avec le point à la fin pour faire une extension de fichier vide))
    • Créer une configuration globale ~/.gitignore_global et exécuter git config --global core.excludesfile ~/.gitignore_global pour l'ajouter à votre configuration git

    remarque: les fichiers suivis auparavant peuvent être décompressés en exécutant git rm --cached filename

  2. Repo exclude - 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, donc ne sont pas vues par les autres utilisateurs plus d'infos ici

[updated] Pour faire des exceptions dans la liste des fichiers ignorés, voir cette question .

95
Vairis

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 à entrer dans la commande et à créer un nouveau fichier en utilisant "edit"

43
sf.

pour que GIT ignore certains fichiers ou dossiers, vous devez créer le fichier .gitignore.

mais dans l'Explorateur Windows, vous devez fournir un nom au fichier. Vous ne pouvez pas créer de fichier avec une extension. L'astuce consiste à créer un fichier texte vide, à accéder à la commande Invite et à changer le nom du fichier en .gitignore

ren "New Text Document.txt" .gitignore

ouvrez maintenant le fichier avec votre éditeur de texte préféré et ajoutez les noms de fichier/dossier que vous souhaitez ignorer. vous pouvez aussi utiliser des jokers comme ceci *.txt

espérons que cela répond à votre question

41
Mahes

Si vous souhaitez conserver un dossier et non les fichiers qu'il contient, il suffit de placer un fichier ".gitignore" dans le dossier avec "*" comme contenu. Ce fichier ignorera tout le contenu du référentiel. Mais .gitignore sera inclus dans votre rapport.

$ 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" pour forcer add:

$ git add path/to/folder/.gitignore -f
19
sensorario

Sous Windows, il y a un problème supplémentaire avec les barres obliques. Exclure un seul répertoire dans . Gitignore avec

dir_à_exclure /

fonctionnera éventuellement, mais en excluant tous les répertoires avec

/

pose des problèmes lorsque vous avez des noms de fichiers avec des espaces (comme my file.txt) dans votre répertoire: Git bash les échappe par une barre oblique inversée (comme my\ file.txt) et que 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.

15
wortwart

Également dans votre répertoire \.git\info projects, il y a un fichier d'exclusion qui est en réalité la même chose que .gitignore (je pense). Vous pouvez ajouter des fichiers et des répertoires à ignorer.

14
Si3

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

  • ignorer le contenu de/dirB /

Top Level .gitignore (/root/.gitignore)

  • C’est là que vont vos informations standard sur Gitignore

Répertoire ignoré .gitignore (/root/dirB.gitignore)

  • Ce fichier se lit simplement comme '*' et le répertoire est complètement ignoré, lui-même et tous les fichiers!

et c'est aussi simple que ça :)

11
J-Dizzle

Juste au cas où vous auriez besoin d'exclure des sous-dossiers, vous pouvez utiliser le caractère générique ** pour exclure n'importe quel niveau de sous-répertoire.

**/build/output/Debug/
8
Eat at Joes

Vous pouvez créer le fichier ".gitignore" avec le contenu:

*
!.gitignore

Cela fonctionne pour moi et simples.

7
Claudionor Oliveira

Quand tout le reste échoue essayez d’éditer 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és" à la liste des fichiers et répertoires à ignorer.

7
Xedret

J'ai eu quelques problèmes pour que Git récupère le fichier .gitignore sous Windows. Le fichier $GIT_DIR/info/exclude semble toujours fonctionner. L'inconvénient de cette approche, cependant, est que les fichiers du répertoire $GIT_DIR ne sont pas inclus dans l'enregistrement, et ne sont donc pas partagés.

p.s. $GIT_DIR est généralement le dossier caché nommé .git

7
Jason

Sous Unix:

touch .gitignore

Sous Windows:

echo > .gitignore

Ces commandes exécutées dans un terminal créeront un fichier .gitignore à l'emplacement actuel.

Ensuite, 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/tutorials/saving-changes/gitignore

5
fvolodimir

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 git status une sortie comme:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   .gitignore
#   a-cache/
#   b-cache/

... if 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 rapporte 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 git status 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 commettre .gitignore, j'étais juste paresseux avec ce cas de test.)

5
Mark Longair

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

Si c'est un fichier nommé data.txt

echo data.txt >> .gitignore

si c'est un chemin comme "Data/passwords.txt"

echo "Data/passwords.txt" >> .gitignore.

4
Olusola Omosola

J'avais des problèmes similaires, je travaille sur une chaîne d'outils Windows avec un référentiel partagé avec des gars de Linux, ils créent heureusement des fichiers avec les mêmes noms (à l'exception des cas) dans un dossier donné.

L'effet est que je peux cloner le repo et avoir immédiatement des dizaines de fichiers "modifiés" qui, si je me connectais, créeraient des dégâts.

J'ai Windows configuré pour sensible à la casse et git de ne pas ignorer la casse, mais il échoue toujours (dans les appels Win32 api 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/02/02/git-tip-ignore-changes-to-tracked-files/index.html

Chris

1
Chris Aaaaa