160 votes

Ignorer les fichiers .pyc dans le dépôt git

Comment puis-je ignorer .pyc dans git ?

Si je le mets dans .gitignore cela ne fonctionne pas. J'ai besoin qu'ils ne soient pas suivis et qu'ils ne soient pas vérifiés pour les commits.

4 votes

.gitignore devrait fonctionner. Pouvez-vous fournir une copie des lignes que vous avez placées dans .gitignore pour tenter de résoudre ce problème ?

342voto

Enrico M. Points 2025

Vous devriez ajouter une ligne avec :

*.pyc 

à la .gitignore dans le dossier Root de l'arborescence de votre dépôt git juste après l'initialisation du dépôt.

En ralphtheninja Si vous avez oublié de le faire au préalable, il vous suffit d'ajouter la ligne à la page d'accueil. .gitignore tous les engagements antérieurs .pyc seront toujours suivis, vous devrez donc les supprimer du référentiel.

Si vous êtes sur un système Linux (ou "parents&fils" comme un MacOSX), vous pouvez rapidement le faire avec cette seule ligne de commande que vous devez exécuter à partir de la racine du dépôt :

find . -name "*.pyc" -exec git rm -f "{}" \;

Cela signifie simplement :

à partir du répertoire dans lequel je me trouve actuellement, fi se termine par l'extension .pyc et transmettre le nom du fichier à la commande git rm -f

Après *.pyc de git en tant que fichiers suivis, valider ce changement dans le dépôt, et enfin ajouter l'option *.pyc à la ligne .gitignore fichier.

(adapté de http://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/ )

99voto

ralphtheninja Points 24346

Vous les avez probablement ajoutés au référentiel avant de mettre *.pyc en .gitignore .
Il faut d'abord les supprimer du référentiel.

47voto

Ignacio Vazquez-Abrams Points 312628

Mettez-le dans .gitignore . Mais depuis le gitignore(5) page de manuel :

  ·   If the pattern does not contain a slash /, git treats it as a shell
       glob pattern and checks for a match against the pathname relative
       to the location of the .gitignore file (relative to the toplevel of
       the work tree if not from a .gitignore file).

  ·   Otherwise, git treats the pattern as a shell glob suitable for
       consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in
       the pattern will not match a / in the pathname. For example,
       "Documentation/*.html" matches "Documentation/git.html" but not
       "Documentation/ppc/ppc.html" or
       "tools/perf/Documentation/perf.html".

Il faut donc soit spécifier le chemin d'accès complet au fichier *.pyc ou le placer dans un .gitignore dans n'importe quel répertoire à partir de la racine du référentiel (inclusivement).

10 votes

Pour éviter que d'autres ne s'y perdent, l'interprétation de la page de manuel par Ignacio est erronée. Il n'est pas nécessaire de placer le *.pyc dans le même répertoire, il suffit de le placer dans un répertoire parent (ou grand-parent, etc.).

0 votes

@Godsmith : Corrigé.

0 votes

Merci Godsmit, vous dites donc que dans le répertoire racine où se trouvent mes main.py est que je peux simplement mettre un .gitignore et à l'intérieur, il y a *.pyc et il ignorera tous les .pyc même s'il se trouve dans plusieurs répertoires ?

11voto

J'essaie d'utiliser la phrase d'un message précédent et de ne pas travailler de manière récursive, puis je lis de l'aide et j'obtiens cette ligne :

find . -name "*.pyc" -exec git rm -f "{}" \;

p.d. il est nécessaire d'ajouter *.pyc dans le fichier .gitignore pour maintenir git propre

echo "*.pyc" >> .gitignore

Appréciez.

10voto

Tae Kim Points 51

Si vous souhaitez ignorer les fichiers '.pyc' globalement (c'est-à-dire si vous ne souhaitez pas ajouter la ligne au fichier .gitignore dans chaque répertoire git), essayez ce qui suit :

$ cat ~/.gitconfig 
[core]
    excludesFile = ~/.gitignore
$ cat ~/.gitignore
**/*.pyc

[Référence]
https://git-scm.com/docs/gitignore

  • Les motifs qu'un utilisateur souhaite que Git ignore dans toutes les situations (par exemple, les fichiers de sauvegarde ou temporaires générés par l'éditeur choisi par l'utilisateur) vont généralement dans un fichier spécifié par core.excludesFile dans le fichier ~/.gitconfig de l'utilisateur.

  • Un "**" initial suivi d'une barre oblique signifie qu'il y a correspondance dans tous les répertoires. Par exemple, "**/foo" correspond au fichier ou au répertoire "foo" n'importe où, de la même manière que le motif "foo". "**/foo/bar" correspond au fichier ou au répertoire "bar" situé directement sous le répertoire "foo".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X