référentiel git ignorant tous les .dll

88

Le titre dit tout. J'essaye d'ajouter mes packages NuGet au référentiel. Tout sauf les fichiers .dll est détecté.

Le fichier gitignore ne contient aucune référence à * .dll. Les fichiers .dll ne sont pas reconnus lorsqu'ils sont situés n'importe où dans l'ensemble du référentiel. info / exclude est également vide.

J'ai également cloné le référentiel (système de fichiers vers système de fichiers par opposition de distant à système de fichiers) sans succès. Ce problème se produit également sur deux ordinateurs différents.

Je pourrais ajouter les fichiers .dll manuellement, mais ils devraient être suivis. Pourquoi ne sont-ils pas suivis?

Paul Knopf
la source
26
Que git config --get core.excludesfiledit-on?
Antony Hatchkins
2
De plus, ce n'est généralement pas une bonne idée d'utiliser git pour suivre les fichiers binaires car git ne peut pas calculer efficacement les deltas entre les révisions, donc garder toutes les versions sera un gaspillage d'espace. Si les dll sont générées à la volée, il vaut mieux simplement les ignorer dans git. Si ce n'est pas le cas, il est préférable d'utiliser un autre mécanisme de synchronisation (par exemple, rsync).
Antony Hatchkins
Ce sont des packages NuGet que j'essaye d'ajouter à git. Je n'utilise pas la fonctionnalité "Restauration de package" de NuGet, j'ai donc besoin de l'archivage de l'intégralité du dossier packages.
Paul Knopf

Réponses:

121

Avez-vous l'un ~/.gitignore_globalou l' autre ou ~/.gitignoredans votre répertoire personnel qui pourrait également répertorier ces modèles de fichiers?

Voir https://help.github.com/articles/ignoring-files

Stuart M
la source
6
Étant donné qu'il travaille avec des fichiers dll, il est sur la plate-forme Windows, donc ~ signifie $ HOMEDRIVE $ HOMEPATH sous Windows 7
Antony Hatchkins
9
Cela s'est avéré être le problème. Je n'ai cependant pas ajouté ce fichier d'ignorer global. Une raison pour laquelle cela sortirait de nulle part? Maintenant que j'y pense, j'ai récemment installé SourceTree (d'Atlassian). C'est peut-être le coupable?
Paul Knopf
6
J'ai eu le même problème, j'ai également installé SourceTree avant cela. Donc je suppose que c'est une bonne idée que SourceTree a ajouté le fichier global ignore car il fonctionnait dans le passé.
Andreas Krebs
8
Edit: OK, il est ajouté par le lien
Andreas Krebs
31
J'ai dû courir git check-ignorepour savoir où se trouvait le fichier. Fondez-le à ~ / Documents / gitignore_global.txt
Matt Canty
97

Si vous utilisez SourceTree et le paramètre par défaut, il ignorera toutes les DLL par défaut ... Tools => Options => Git puis "Edit File" ... ajoutez un "#" avant .dll => "# .dll" .. . sauver et fermer.

Ensuite, pour l'Explorateur Windows dans votre dossier packages, ouvrez un terminal GitBash et tapez "git add". et laissez-le fonctionner, de retour dans SourceTree, attendez une seconde et toutes ces DLL de package manquantes apparaîtront pour que vous puissiez vous engager et pousser.

KevinB
la source
13
Bonne réponse pour les utilisateurs de SourceTree;)
jmpcm
Connaissait une liste d'ignorés globale, je n'ai pas pu la trouver dans l'interface graphique .. Merci!
Christoph
Tools => Options => Git / Mercurial Global Ignore List ... Si vous n'en avez pas, vous pouvez en créer un et y pointer.
KevinB
2
Emplacement du fichier: ~ / Documents / gitignore_global.txt
James McCormack
Cela a fonctionné pour l'arborescence des sources, mais comment pour Visual Studio les ignorés n'étaient pas dans mon gitignore. Tout ce que j'ai utilisé l'arbre des sources pour cette tâche
Demodave
11

Je pourrais ajouter les fichiers .dll manuellement, mais ils devraient être suivis. Pourquoi ne sont-ils pas suivis?

Non, ils ne devraient pas être suivis, sauf si vous les avez ajoutés. Seuls les fichiers déjà ajoutés et validés sont suivis; c'est ce que signifie «suivi».

Essayez d'ajouter manuellement l'un d'entre eux via git addet il vous dira pourquoi il les ignore et vous invitera à utiliser git add -fpour ajouter le fichier de toute façon.

maigre
la source
J'ai fait un "git add '/ packages'" et il n'a pas détecté les .dlls. J'ai ensuite utilisé -f et il l'a ajouté. J'ai trouvé le problème cependant. "* .dll" était dans mon ignorer global. Aucun indice d'où vient cette ignorance globale.
Paul Knopf
2

Vous devez explicitement dire à git de suivre tous les nouveaux fichiers.

  1. Exécutez git add filenamepour ajouter le fichier à l'index de git.

  2. Exécutez git commitpour valider les modifications de votre index.

git status devrait également afficher la liste des fichiers et répertoires non suivis.

Si vous souhaitez répertorier tous les fichiers du référentiel ignorés par gitignore, vous pouvez exécuter:

git ls-files . --ignored --exclude-standard --others

Si vous souhaitez répertorier tous les fichiers non suivis dans le référentiel:

git ls-files . --exclude-standard --others
Tuxdude
la source
2
J'ai dû "git add -f" pour suivre les fichiers qui étaient en fait ignorés. Il s'est avéré être une entrée dans le fichier d'ignorer global, qu'une application a mis là pour mon inconsciemment.
Paul Knopf
2

J'ai fait face à un problème similaire. Je ne peux pas ajouter le fichier .dll du répertoire du package à mon git, puis j'ai trouvé le fichier gitignore_global.txt car sourcetree a automatiquement ajouté ce fichier en tant que paramètre global d'ignorer git. J'ai supprimé * .dll du fichier gitignore_global.txt et cela fonctionne très bien pour moi.

Emplacement du fichier gitignore_global.txt comme ci-dessous

C: \ Users \ XXXX \ Documents \ gitignore_global.txt ou vous pouvez le trouver à partir de sourcetree TOOL => OPTION => onglet GIT et découvrir la liste globale des ignorés

Niraj Trivedi
la source
1

Dans mon cas, il n'y avait aucune référence .dll dans le fichier .gitignore, et je n'avais pas de fichier global. Cependant, dans le sous-répertoire .git, j'ai trouvé un fichier appelé ms-persist.xml. J'ai fermé toutes les instances de Visual Studio, puis j'ai ajouté manuellement mes fichiers .dll manquants à ce fichier. Lorsque j'ai rouvert Visual Studio, les fichiers .dll montraient comme devant être archivés. Je les ai enregistrés et maintenant je suis en or ...

Curtis
la source
0

Vous avez un global .gitignorequelque part ou plus loin.gitignore fichier fichiers dans les sous-répertoires - par rapport à la racine de votre projet.

Sur les systèmes Linux et MacOS, le git-ignore global est le plus probable dans votre maison ~/

~/.gitignore_global

Sous Windows, il se trouve probablement dans votre répertoire d'utilisateurs. Soit votre utilisateur local (que vous pouvez trouver en tapant ECHO %USERPROFILE%ou whoamisur la ligne de commande.

Si ce n'est pas là, alors sûrement un .gitconfigest présent à la place. Recherchez ici l'emplacement du gitignore (par exemple, le Documentsdossier de l'utilisateur ).

Edit : Utilisez git config --list --show-originpour obtenir des détails sur les paramètres git contributeurs et leurs emplacements de fichiers correspondants.

Lorenz Lo Sauer
la source
0

Je sais que cette question est très ancienne, mais j'ajoute pour les autres qui pourraient la visiter à l'avenir. Vous pouvez aller modifier votre fichier global ignore comme les réponses mentionnées ci-dessus, mais cela affectera TOUS vos dépôts git. Si, à la place, vous souhaitez une approche plus granulaire, vous pouvez simplement exclure des DLL spécifiques ou des dossiers spécifiques dans votre projet individuel .gitignores. Cela remplace tous les paramètres d'ignorer et force les fichiers à être détectés et gérés par git. Je pense que c'est une meilleure approche.

.gitignore (pour votre projet particulier)

# Custom ignores
!*.dll
# or
!My.specific.dll

# rest of .gitignore
jp36
la source