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)
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)
-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.
git clean -X -n --exclude="!local_settings.py"
fonctionne. J'ai découvert cela quand j'ai googlé et a obtenu cette page.
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)
si vous utilisez Python 2.6+, définissez la variable d'environnement,PYTHONDONTWRITEBYTECODE
true
. 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
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"