Git: Exclure un fichier avec git propre

je travaille sur un grand projet python, et je suis vraiment malade si .pyc et *~ fichiers. Je voudrais les supprimer. J'ai vu que l' -X drapeau de Git clean supprimerait les fichiers non tracés. Comme vous pouvez l'imaginer, je ne suis pas suivi .pyc ni *~ fichiers. Et que ferait l'affaire. Le problème est que j'ai un local_settings.py le fichier que j'aimerais garder après le git propre.

voilà ce que j'ai.

.gitignore:

*.pyc
*~
local_settings.py

quand j'exécute ceci commande:

git clean -X -n -e local_settings.py

- je obtenir cette liste de résultats:

supprimerait local_settings.py

Supprimerait les exigences.txt~

Permettrait de supprimer (d'autres tas de) ~ files

Permettrait de supprimer (d'autres tas de) pyc fichiers

Je ne veux pas enlever le local_settings.py file. J'ai essayé beaucoup de façons de le faire, mais je ne vois pas comment réaliser cela.

git clean -X -n -e local_settings.py
git clean -X -n -e "local_settings.py"
git clean -X -n --exclude=local_settings.py
git clean -X -n --exclude="local_settings.py"

Et rien ne semble travail.

EDIT:

pour la postérité, la bonne façon de le faire est (Merci @ Rifat):

git clean -x -n -e local_settings.py # Shows what would remove (-n flag)
git clean -x -f -e local_settings.py # Removes it (note the -f flag)
28
demandé sur mikemaccana 2012-06-18 19:14:52

5 réponses

pouvez-vous essayer cela avec small x à la place de la capitale. Comme -git clean -x

git clean -x -n -e local_settings.py # Shows what would remove (-n flag)
git clean -x -f -e local_settings.py # Removes it (note the -f flag)

git documentation:

   -x
       Don't use the standard ignore rules read from .gitignore (per
       directory) and $GIT_DIR/info/exclude, but do still use the ignore
       rules given with -e options. This allows removing all untracked
       files, including build products. This can be used (possibly in
       conjunction with git reset) to create a pristine working directory
       to test a clean build.

   -X
       Remove only files ignored by git. This may be useful to rebuild
       everything from scratch, but keep manually created files.
18
répondu Rifat 2015-03-24 10:02:14
git clean -X -n --exclude="!local_settings.py"

fonctionne. J'ai découvert cela quand j'ai googlé et a obtenu cette page.

9
répondu forivall 2013-06-17 21:10:57

j'ai mis les fichiers locaux qui tombent dans cette catégorie .git/info / exclude (par exemple, mes fichiers de projet IDE). Ils vous pouvez faire une propre comme ceci:

git ls-files --others --exclude-from=.git/info/exclude -z | \
    xargs -0 --no-run-if-empty rm --verbose

Où:

  • --autres: montre sans traces de fichiers
  • --exclude-from: fournir un standard git d'ignorer le style de fichiers à exclure de la liste
  • - z / -0: utilisez \0 au lieu de \n pour séparer les noms
  • --no-run-si-vide: Ne pas exécuter rm si la liste est vide

Vous pouvez créer un alias, par exemple:

git config --global alias.myclean '!git ls-files --others --exclude-from=.git/info/exclude -z | xargs -0 --no-run-if-empty rm --verbose --interactive'

--interactive signifie que vous avez à faire git myclean -f pour forcer la suppression.

Référence:http://git-scm.com/docs/git-ls-files (plus la première ligne de la valeur par défaut .git/info/exclure)

2
répondu Jonah Graham 2015-03-07 13:58:22

si vous utilisez Python 2.6+, définissez la variable d'environnement,PYTHONDONTWRITEBYTECODEtrue. Vous pouvez simplement ajouter ce qui suit à quelque chose comme .profile ou .bashrc pour désactiver entièrement votre profil:

export PYTHONDONTWRITEBYTECODE=true

ou, si vous voulez juste faire cela pour un projet particulier que vous travaillez, vous devrez exécuter ce qui précède dans votre shell à chaque fois (ou dans l'un de vos scripts d'initialisation virtualenv si vous utilisez virtualenv et virtualenvwrapper), ou vous pouvez simplement passer le -B paramètre lorsque vous appelez python, e.g.

python -B manage.py runserver
0
répondu Chris Pratt 2012-06-18 15:29:39

si vous avez déjà commis les pyc et ainsi de suite, faites ce qui suit:

Ajouter *.pyc, *~ et local_settings.py à la .gitignore. Puis faire dans votre dépôt git:

find . -name '*.pyc' | xargs rm
find . -name '*~' | xargs rm

alors:

git commit -am "get rif of them"
0
répondu Christoph Eberhardt 2012-06-22 12:49:30