Làm cách nào để tôi có thể bỏ qua .pyc
các tệp trong git?
Nếu tôi đặt nó vào .gitignore
nó không hoạt động. Tôi cần chúng không được theo dõi và không được kiểm tra các cam kết.
Làm cách nào để tôi có thể bỏ qua .pyc
các tệp trong git?
Nếu tôi đặt nó vào .gitignore
nó không hoạt động. Tôi cần chúng không được theo dõi và không được kiểm tra các cam kết.
Câu trả lời:
Đặt nó vào .gitignore
. Nhưng từ gitignore(5)
trang người đàn ông:
· 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".
Vì vậy, hãy chỉ định đường dẫn đầy đủ đến *.pyc
mục nhập thích hợp hoặc đặt nó vào một .gitignore
tệp trong bất kỳ thư mục nào dẫn từ gốc kho lưu trữ (bao gồm).
Bạn nên thêm một dòng với:
*.pyc
vào .gitignore
tệp trong thư mục gốc của cây kho lưu trữ git của bạn ngay sau khi khởi tạo kho lưu trữ.
Như ralphtheninja đã nói, nếu bạn quên làm điều đó trước đó, nếu bạn chỉ thêm dòng vào .gitignore
tệp, tất cả các .pyc
tệp đã cam kết trước đó sẽ vẫn được theo dõi, vì vậy bạn sẽ cần xóa chúng khỏi kho lưu trữ.
Nếu bạn đang sử dụng hệ thống Linux (hoặc "cha mẹ và con trai" như MacOSX), bạn có thể nhanh chóng thực hiện điều đó chỉ với một dòng lệnh mà bạn cần thực thi từ thư mục gốc của kho lưu trữ:
find . -name "*.pyc" -exec git rm -f "{}" \;
Điều này chỉ có nghĩa là:
bắt đầu từ thư mục mà tôi hiện đang ở, tìm tất cả các tệp có tên kết thúc bằng phần mở rộng
.pyc
và chuyển tên tệp vào lệnhgit rm -f
Sau khi *.pyc
xóa tệp khỏi git dưới dạng tệp được theo dõi, hãy cam kết thay đổi này vào kho lưu trữ và cuối cùng bạn có thể thêm *.pyc
dòng vào .gitignore
tệp.
(phỏng theo http://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/ )
Bạn có thể đã thêm chúng vào kho lưu trữ trước khi đưa *.pyc
vào .gitignore
.
Đầu tiên hãy xóa chúng khỏi kho lưu trữ.
tôi cố gắng sử dụng câu của một bài viết trước và không làm việc đệ quy, sau đó đọc một số trợ giúp và nhận được dòng này:
find . -name "*.pyc" -exec git rm -f "{}" \;
pd là cần thiết để thêm * .pyc trong tệp .gitignore để duy trì git sạch
echo "*.pyc" >> .gitignore
Thưởng thức.
Cảm ơn @Enrico vì câu trả lời.
Lưu ý nếu bạn đang sử dụng virtualenv, bạn sẽ có thêm một số .pyc
tệp trong thư mục mà bạn hiện đang ở, các tệp này sẽ được ghi lại bằng lệnh tìm của anh ấy.
Ví dụ:
./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
Tôi cho rằng việc xóa tất cả các tệp là vô hại, nhưng nếu bạn chỉ muốn xóa các .pyc
tệp trong thư mục chính của mình, thì chỉ cần làm
find "*.pyc" -exec git rm -f "{}" \;
Thao tác này sẽ chỉ xóa app.pyc
tệp khỏi kho lưu trữ git.