web-dev-qa-db-ja.com

gitリポジトリの.pycファイルを無視する

Gitの.pycファイルを無視するにはどうすればよいですか?

.gitignoreに入れると機能しません。それらを追跡せず、コミットのチェックをしないようにする必要があります。

82
enfix

.gitignoreに入れてください。しかし、gitignore(5) manページから:

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

そのため、適切な*.pycエントリへのフルパスを指定するか、リポジトリルートから始まる任意のディレクトリ(包括的)の.gitignoreファイルに配置します。

次の行を追加する必要があります。

*.pyc 

リポジトリの初期化直後に、gitリポジトリツリーのルートフォルダにある.gitignoreファイルに追加します。

ralphtheninjaが言ったように、事前に忘れていた場合、.gitignoreファイルに行を追加するだけで、以前にコミットされた.pycファイルはすべてまだ追跡されているため、リポジトリから削除する必要があります。

Linuxシステム(またはMacOSXのような「親&息子」)を使用している場合、リポジトリのルートから実行する必要がある次の1行のコマンドを使用して、すばやく実行できます。

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

これは単に:

現在のディレクトリから開始し、名前が拡張子.pycで終わるすべてのファイルを検索し、ファイル名をコマンドgit rm -fに渡します

*.pycファイルをgitから追跡ファイルとして削除した後、この変更をリポジトリにコミットし、*.pyc行を.gitignoreファイルに追加できます。

http://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/から適応

187
Enrico M.

*.pyc.gitignoreに入れる前に、おそらくリポジトリに追加しているでしょう。
最初にそれらをリポジトリから削除します。

74
ralphtheninja

@Enricoの回答に感謝します。

Virtualenvを使用している場合、現在のディレクトリ内にいくつかの.pycファイルがあり、彼のfindコマンドによってキャプチャされることに注意してください。

例えば:

./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

すべてのファイルを削除しても無害だと思いますが、メインディレクトリの.pycファイルのみを削除する場合は、

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

これにより、gitリポジトリからapp.pycファイルのみが削除されます。

0
Andy G