45

私は大きな python プロジェクトに取り組んでいます。それらを削除したいと思います。-Xgit cleanのフラグが追跡されていないファイルを削除することを見てきました。ご想像のとおり、私は追跡.pyc*~ファイルもしていません。そして、それはトリックになります。問題はlocal_settings.py、git clean の後に保持したいファイルがあることです。

だから、これは私が持っているものです。

.gitignore:

*.pyc
*~
local_settings.py

このコマンドを実行すると:

git clean -X -n -e local_settings.py

この結果のリストを取得します。

local_settings.py
を削除します requirements.txt を削除します~
(他の多数の) ~ ファイルを削除します
(他の多数の) pyc ファイルを削除します

local_settings.py ファイルを削除したくありません。私はそれを行うために多くの方法を試しましたが、それを達成する方法がわかりません。

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"

そして、何も機能していないようです。

編集:

後世のために、それを行う正しい方法は次のとおりです(@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)
4

5 に答える 5

36

違いは、使用している資本Xです。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)

git ドキュメントから:

   -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.
于 2012-06-18T15:33:40.480 に答える
4

このカテゴリに分類されるローカル ファイルを .git/info/exclude に置きます (たとえば、IDE プロジェクト ファイル)。彼らはあなたがこのようにきれいにすることができます:

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

どこ:

  • --others: 追跡されていないファイルを表示します
  • --exclude-from: リストから除外する標準の git ignore スタイル ファイルを提供します
  • -z / -0: \n の代わりに \0 を使用して名前を分割します
  • --no-run-if-empty: リストが空の場合は rm を実行しない

エイリアスを作成できます。たとえば、次のようになります。

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/info/exclude の最初の行)

于 2015-03-07T13:49:19.053 に答える
0

Python 2.6以降を実行している場合は、環境変数、、をに設定するだけPYTHONDONTWRITEBYTECODEですtrue。次のようなものに以下を追加するか、プロファイルに対して完全に無効にすることができ.profileます.bashrc

export PYTHONDONTWRITEBYTECODE=true

または、作業中の特定のプロジェクトに対してこれを実行する場合は、毎回シェルで(または、virtualenvとvirtualenvwrapperを使用している場合はvirtualenv initスクリプトの1つで)上記を実行する必要があります。または、-B呼び出すときにパラメータを渡すだけですpython。たとえば、

python -B manage.py runserver
于 2012-06-18T15:29:39.963 に答える
0

pyc などを既にコミットしている場合は、次の手順を実行します。

*.pyc、*~、および local_settings.py を .gitignore に追加します。次に、git リポジトリで次のようにします。

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

次に、次のようにします。

git commit -am "get rif of them"

今、彼らはもうあなたを悩ませるべきではありません

于 2012-06-18T15:36:58.157 に答える