Git'teki .pycdosyaları nasıl yok sayabilirim ?
Eğer içine koyarsam .gitignoreişe yaramaz. İzlenmemelerine ve taahhütler için kontrol edilmemelerine ihtiyacım var.
Git'teki .pycdosyaları nasıl yok sayabilirim ?
Eğer içine koyarsam .gitignoreişe yaramaz. İzlenmemelerine ve taahhütler için kontrol edilmemelerine ihtiyacım var.
Yanıtlar:
Yerine koy .gitignore. Ama gitignore(5)man sayfasından:
· 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".
Bu nedenle, ya uygun *.pycgirişin tam yolunu belirtin ya .gitignoreda depo kök dizininden (dahil) gelen herhangi bir dizindeki bir dosyaya koyun .
Şunlarla bir satır eklemelisiniz:
*.pyc
için .gitignoredoğru depo başlatmasından sonra senin git depo ağacın kök klasöründe dosyanın.
As ralphtheninja sözü size sadece hattı eklerseniz, önceden bunu unutursanız, .gitignoredosyanın, önceden işlenen .pycdepodan bunları kaldırmak gerekir böylece dosyalar hala izlenir.
Bir Linux sistemindeyseniz (veya bir MacOSX gibi "ebeveynler ve oğullar"), bunu deponun kökünden yürütmeniz gereken tek satırlık komutla hızlı bir şekilde yapabilirsiniz:
find . -name "*.pyc" -exec git rm -f "{}" \;
Bu sadece şu anlama gelir:
şu anda bulunduğum dizinden başlayarak, adı uzantı ile biten tüm dosyaları bulun
.pycve dosya adını komuta iletingit rm -f
*.pycDosyaların git'ten izlenen dosyalar olarak silinmesinden sonra , bu değişikliği arşive işleyin ve sonunda *.pycsatırı .gitignoredosyaya ekleyebilirsiniz .
( http://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/ adresinden uyarlanmıştır )
Muhtemelen koymadan önce depoya ekleyen *.pyciçinde .gitignore.
Önce onları havuzdan çıkarın.
Önceki bir gönderinin cümlesini kullanmaya çalışıyorum ve yinelemeli çalışmıyorum, sonra biraz yardım okuyup şu satırı alıyorum:
find . -name "*.pyc" -exec git rm -f "{}" \;
git'i temiz tutmak için .gitignore dosyasına * .pyc eklemek için pd gereklidir
echo "*.pyc" >> .gitignore
Zevk almak.
Genel olarak '.pyc' dosyalarını yok saymak istiyorsanız (yani satırı her git dizinindeki .gitignore dosyasına eklemek istemiyorsanız), aşağıdakileri deneyin:
$ cat ~/.gitconfig
[core]
excludesFile = ~/.gitignore
$ cat ~/.gitignore
**/*.pyc
[Referans]
https://git-scm.com/docs/gitignore
Bir kullanıcının Git'in her durumda göz ardı etmesini istediği modeller (örneğin, kullanıcının tercih ettiği düzenleyici tarafından oluşturulan yedekleme veya geçici dosyalar) genellikle kullanıcının ~ / .gitconfig dosyasında core.excludesFile ile belirtilen bir dosyaya gider.
Başında bir "**" ve ardından gelen eğik çizgi, tüm dizinlerde eşleşme anlamına gelir. Örneğin, "** / foo" dosya veya "foo" dizini herhangi bir yerde, "foo" kalıbıyla aynı şekilde eşleşir. "** / foo / bar", doğrudan "foo" dizini altındaki herhangi bir yerde dosya veya "bar" dizini ile eşleşir.
Cevap için teşekkürler @Enrico.
Eğer virtualenv kullanıyorsanız .pyc, o anda bulunduğunuz dizinde birkaç dosyanızın daha olacağını ve bu dosyanın find komutuyla yakalanacağını unutmayın.
Örneğin:
./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
Sanırım tüm dosyaları kaldırmak zararsızdır, ancak yalnızca .pycana dizininizdeki dosyaları kaldırmak istiyorsanız ,
find "*.pyc" -exec git rm -f "{}" \;
Bu sadece app.pycdosyayı git deposundan kaldıracaktır .