Làm cách nào để tôi có thể bỏ qua .pyccác tệp trong git?
Nếu tôi đặt nó vào .gitignorenó 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 .pyccác tệp trong git?
Nếu tôi đặt nó vào .gitignorenó 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 *.pycmục nhập thích hợp hoặc đặt nó vào một .gitignoretệ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 .gitignoretệ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 .gitignoretệp, tất cả các .pyctệ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
.pycvà chuyển tên tệp vào lệnhgit rm -f
Sau khi *.pycxó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 *.pycdòng vào .gitignoretệ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 *.pycvà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ố .pyctệ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 .pyctệ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.pyctệp khỏi kho lưu trữ git.