2012-06-18 7 views
26

私は大きなpythonプロジェクトで作業していますが、.pycと*〜ファイルの場合は本当にうんざりです。私はそれらを削除したいと思います。私は、-X git cleanのフラグが、untrackedファイルを削除することを確認しました。あなたが想像しているように、私は.pycでも*~というファイルも追跡していません。そして、それはトリックを作るだろう。問題は、私がlocal_settings.pyファイルを持っていて、git clean後に保持したいということです。Git:git cleanでファイルを除外する

これは私が持っているものです。

.gitignore:

*.pyc 
*~ 
local_settings.py 

私は、このコマンドを実行します。

git clean -X -n -e local_settings.py 

私は結果のリストを取得する:

はlocal_settings.py
を削除するだろうが要件を削除するだろう.txt〜
R束)〜ファイル
は(他の束を取り除くでしょう)私はlocal_settings.pyファイルを削除したくないのpycファイル

。私はそれをする方法をたくさん試してみましたが、私はそれを遂行する方法を理解できません。

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" 

何も動作していないようです。

EDIT:後世のために

、それを行うための正しい方法は、(感謝@Rifat)です:あなただけの環境変数を設定2.6+のPythonを実行している場合

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) 
+2

抱擁 '〜.pyc's、(別のディレクトリに一時/バックアップファイルを配置するために、あなたのエディタを設定するかどうかまったく)、 'git clean'ingを忘れてしまいます。あなたのOCDをフィードしないでください – KurzedMetal

+0

* .pycと*〜は既にコミットしましたか? –

+0

'git update-index --skip-worktree local_settings.py'は役に立ちますか? –

答えて

13

大文字ではなく小文字のxで試してください。以下のような - 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) 

the 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. 
+0

これはそれです!どうもありがとうございました! – santiagobasulto

0

PYTHONDONTWRITEBYTECODEtrueに設定します。あなたはちょうどあなたが作業している特定のプロジェクトのために、あなたがする必要がありますことを行いたい場合は、

export PYTHONDONTWRITEBYTECODE=true 

をまたは:あなたは自分のプロファイルにそれを完全に無効にする.profileまたは.bashrcのようなものに以下を追加することができます毎回(またはvirtualenvとvirtualenvwrapperを使用している場合はvirtualenv initスクリプトのいずれかで)あなたのシェルで上記を実行するか、pythonと呼ぶときに-Bパラメータを渡すだけです。

python -B manage.py runserver 
0

既にようにPYC年代をコミットしている場合は、次の操作を行います。

追加* .pycファイル、*〜 .gitignoreにlocal_settings.pyを追加します。 次に、あなたのgitリポジトリで行います

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

は、その後の操作を行います。

git commit -am "get rif of them" 

は今、彼らはもう

8
git clean -X -n --exclude="!local_settings.py" 

作品をお邪魔べきではありません。私はグーグルでこれを発見し、this pageを得ました。

+0

ニース!ありがとうございました。私のシェルで '!'を使わなくてはなりませんでしたが、うまくいきました。 – Vimes

1

このカテゴリに該当するローカルファイルを.git/info/exclude(たとえば、私のIDEプロジェクトファイル)に置きます。

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

  • --others:人跡未踏のファイルに--exclude-から
  • を示していますから除外するスタイルファイルを無視し、標準のgitを提供彼らは、あなたは、このようにきれいに行うことができますリスト
  • -z/-0:リストが空
されている場合は、Rmを実行しないでください:名
  • --no-実行-IF-空を分割するには、\ 0ではなく、\ nを使用します

    あなたは例えば、エイリアスを作成することができます。:

    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は、削除を強制的にgitのmyclean -fをしなければならないことを意味します。

    参考:http://git-scm.com/docs/git-ls-files(プラスデフォルト.git /情報の最初の行/除外)

  • 関連する問題