Làm thế nào để bỏ qua tất cả các thư mục / tập tin ẩn đệ quy trong kho git?


128

Tôi muốn Git bỏ qua tất cả các tập tin và thư mục ẩn. I E

  • .aptitude
  • .ssh/
  • .bash_rc
  • config/.hidden

Có một quy tắc đơn giản để bao gồm điều này mà không cần thêm cụ thể từng mục?

Câu trả lời:


165

Chỉ cần thêm một mô hình để .gitignore

.*
!/.gitignore

Chỉnh sửa: Đã thêm .gitignoretệp chính nó (vấn đề nếu nó chưa được cam kết).


3
Bạn có thể muốn buộc thêm một số tệp cần thiết sau này. ví dụ. tệp .htaccess. Dựa trên yêu cầu của bạn trong khóa học.
dakdad

3
@dakdad: Cảm ơn lời đề nghị. Cải thiện câu trả lời. Nếu Poe có một số tệp đặc biệt như .htaccessđã được kiểm tra, chúng sẽ tiếp tục được theo dõi. gitignorechỉ quan trọng đối với các tập tin mới.
Daniel Böhmer

@ DanielBöhmer Có lẽ điều này đang thoát khỏi chủ đề, nhưng có lý do gì để không bỏ qua /.gitignorevà không phải mọi .gitignoretệp bất kể nó nằm ở đâu? Tức là tại sao không liệt kê !.gitignore(không gạch chéo)?
Jason Young

1
@JasonYoung Câu hỏi thú vị. Vâng, mẫu này bỏ qua chỉ tập tin chính nó. Tôi thấy điều này ngắn gọn hơn mà không có tác dụng phụ cho một ví dụ để sao chép và dán. Tất nhiên, bạn có thể chỉ cần bỏ qua bất kỳ .gitignoretệp nào trong .gitignoretệp cấp cao nhất của bạn . Nhưng sự lựa chọn đó là tùy thuộc vào bạn.
Daniel Böhmer

64

.gitignore sẽ chỉ ảnh hưởng đến các tệp chưa được 'thêm'.

Để tạo các mục .gitignore mới ảnh hưởng đến tất cả các tệp

  1. Thay đổi thành .gitignore
  2. git commit -a -m "Pre .gitignore changes"
  3. git rm -r --cached .
  4. git add .
  5. git commit -a -m "Post .gitignore changes"
  6. git status nên xuất ra "không có gì để cam kết (thư mục làm việc sạch)" `

Dòng "chưa được thêm" đã là khóa ở đây, bởi vì nếu bạn đã cam kết một tệp đã cho thì bỏ qua sẽ không hoạt động với anh ta nữa, bạn phải xóa nó khỏi kho lưu trữ và lần sau bạn tạo nó .gitignore sẽ bỏ qua nó
Georgi Peev

21

Trong .git/info/exclude, thêm dòng này:

.*

Điều này sẽ làm cho việc bỏ qua tất cả các tệp ẩn / dấu chấm theo cách đệ quy mặc định cho mọi kho lưu trữ trên máy. Một .gitignoretập tin riêng cho mỗi repo là không cần thiết theo cách này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.