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


107

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

入れて.gitignoreも動かない。追跡を解除し、コミットをチェックしないようにする必要があります。


4
.gitignoreが動作するはずです。この問題を解決するために.gitignoreに入力した行のコピーを提供できますか?
Al Riddoch、2011

回答:


41

それを入れてください.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、リポジトリルートからの任意のディレクトリにあるファイルに含めます(両端を含む)。


6
他の人が混乱するのを避けるために、イグナシオのmanページの解釈は間違っています。* .pycを同じディレクトリに配置する必要はありません。親ディレクトリ(または祖父母など)に配置するだけで十分です。
Godsmith

@Godsmith:修正されました。
Ignacio Vazquez-Abrams

241

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

*.pyc 

.gitignore右リポジトリ初期化した後、あなたのgitリポジトリツリーのルートフォルダ内のファイル。

以下のよう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/から変更)


3
または、gitとローカルマシンからファイルを削除するだけの場合はgit rm --cached *.pyc、最上位ディレクトリから実行することもできます。ここ
Anupam

私はそれを持っていますが、いったん.pycファイルをコミットしたら、とにかくgitによって追跡されます。リポジトリにある場合は、まず削除してコミットする必要があります
Mahmoud Hboubati

84

おそらく置く前に、リポジトリに追加している*.pyc中で.gitignore
まず、それらをリポジトリから削除します。


3

私は以前の投稿の文を使用しようとし、再帰的に動作しないようにして、いくつかのヘルプを読んでこの行を取得します:

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

gitをクリーンに維持するには、*。pycを.gitignoreファイルに追加するためにpdが必要です

echo "*.pyc" >> .gitignore

楽しい。


0

答えてくれて@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 "{}" \;

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.