web-dev-qa-db-fra.com

Ignorer le fichier .pyc dans le référentiel git

comment puis-je ignorer le fichier .pyc dans git . Si je mets dans .gitignore ne fonctionne pas: j'ai besoin qu'ils soient non suivis et ne le vérifient pas pour commit.

72
enfix

Mettez-le dans .gitignore. Mais à partir de la page de manuel gitignore(5):

  ·   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".

Donc, spécifiez le chemin d'accès complet à l'entrée *.pyc appropriée ou placez-le dans un fichier .gitignore dans l'un des répertoires à partir de la racine du référentiel (inclusif).

31

Vous devriez ajouter une ligne avec:

*.pyc 

dans le fichier .gitignore dans le dossier racine de votre arborescence de référentiel git juste après l’initialisation du référentiel.

Comme ralphtheninja a dit, si vous avez oublié de le faire auparavant, si vous ajoutez simplement la ligne au fichier .gitignore, tous les fichiers .pyc précédemment validés 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 le faire rapidement avec cette commande d'une seule ligne que vous devez exécuter à partir de la racine du référentiel:

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

Cela signifie simplement: 

à partir du répertoire dans lequel je suis actuellement, trouvez tous les fichiers dont le fichier name se termine par l'extension .pyc et passe le nom du fichier à la commande git rm -f

Après la suppression des fichiers *.pyc de git en tant que fichiers suivis, validez cette modification dans le référentiel, puis vous pourrez enfin ajouter la ligne *.pyc au fichier .gitignore.

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

171
Enrico M.

Vous les avez probablement ajoutées au référentiel avant de mettre *.pyc dans .gitignore.
Commencez par les supprimer du référentiel.

69
ralphtheninja

Merci @Enrico pour la réponse. 

Notez que si vous utilisez virtualenv, vous aurez plusieurs autres fichiers .pyc dans le répertoire dans lequel vous vous trouvez, qui seront capturés par sa commande find.

Par exemple:

./app.pyc
./lib/python2.7/_weakrefset.pyc
./lib/python2.7/abc.pyc
./lib/python2.7/codecs.pyc
./lib/python2.7/copy_reg.pyc
./lib/python2.7/site-packages/alembic/__init__.pyc
./lib/python2.7/site-packages/alembic/autogenerate/__init__.pyc
./lib/python2.7/site-packages/alembic/autogenerate/api.pyc

Je suppose qu'il est inoffensif de supprimer tous les fichiers, mais si vous souhaitez uniquement supprimer les fichiers .pyc de votre répertoire principal, faites-le.

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

Cela ne supprimera que le fichier app.pyc du référentiel git.

0
Andy G