Khi nào bạn sẽ sử dụng .git / thông tin / loại trừ thay vì .gitignore để loại trừ các tệp?


143

Tôi hơi bối rối về những ưu và nhược điểm của việc sử dụng .git/info/exclude.gitignoreloại trừ các tệp.

Cả hai đều ở cấp độ của kho lưu trữ / dự án, vậy chúng khác nhau như thế nào và khi nào chúng ta nên sử dụng .git/info/exclude?

Câu trả lời:


195

Ưu điểm của .gitignorenó là có thể được kiểm tra vào chính kho lưu trữ, không giống như .git/info/exclude. Một ưu điểm khác là bạn có thể có nhiều .gitignoretệp, một tệp trong mỗi thư mục / thư mục con cho các quy tắc bỏ qua cụ thể của thư mục, không giống như .git/info/exclude.

Vì vậy, .gitignorecó sẵn trên tất cả các bản sao của kho lưu trữ. Do đó, trong các nhóm lớn, tất cả mọi người đều bỏ qua cùng một loại tệp Ví dụ *.db, *.log. Và bạn có thể có quy tắc bỏ qua cụ thể hơn vì nhiều .gitignore.

.git/info/excludechỉ có sẵn cho các bản sao riêng lẻ, do đó những gì một người bỏ qua trong bản sao của mình không có sẵn trong bản sao của một số người khác. Ví dụ, nếu ai đó sử dụng Eclipseđể phát triển, nhà phát triển đó có thể thêm .buildthư mục vào .git/info/excludevì các nhà phát triển khác có thể không sử dụng Eclipse.

Nói chung, các tệp / bỏ qua các quy tắc phải được bỏ qua phổ biến nên được đưa vào .gitignorevà nếu không, các tệp mà bạn muốn bỏ qua chỉ trên bản sao cục bộ của bạn nên đi vào.git/info/exclude


nhưng điều đó lý tưởng nhất là đi vào ~ / .gitignore theo tài liệu chính thức của Git tại đây, git-scm.com/docs/gitignore
Devendra Swami

@DevendraSwami Tôi không nhận được mục cụ thể nào nên đi vào ~/.gitignorebình luận của bạn ở trên. Tôi hiểu rằng quy tắc bỏ qua có thể ở 3 cấp độ - $PROJECT/.git/info/excludeđối với quy tắc bỏ qua cụ thể (dự án, người dùng), $PROJECT/<any number of directories>/.gitignoredành cho quy tắc bỏ qua cụ thể của dự án đối với bất kỳ người dùng nào ở bất kỳ đâu (khi được đăng nhập), ~/.gitignore đối với quy tắc bỏ qua cụ thể của người dùng cho bất kỳ dự án nào cho người dùng đó trên máy đó. Dựa trên mục tiêu, bạn chọn địa điểm để đặt một mục.
mu

Vâng, bạn hoàn toàn đúng. Nhận xét của tôi có liên quan đến câu hỏi này stackoverflow.com/questions/59673991/
Khăn

Tôi xin lỗi vì nhận xét không đầy đủ ban đầu.
Devendra Swami

2
@Shimmyweitzhandler, tập tin sln đã có trong repo của bạn chưa? Sau đó, loại trừ hoặc .ignore sẽ không ngăn git theo dõi các thay đổi của nó. Hãy thử một trong những điều sau đây: git rm --cached <path-name>sẽ xóa nó khỏi kho lưu trữ, nhưng giữ nó cục bộ. git update-index --skip-worktree <path-name>sẽ bỏ qua các thay đổi đối với tệp, nhưng giữ nó trong kho lưu trữ. Vì tò mò: Tại sao bạn muốn loại bỏ tệp sln? Đây là một phần quan trọng của giải pháp .Net phải không?
Koen

36

Googled: 3 cách loại trừ tệp

  1. .gitignore áp dụng cho mọi bản sao của kho lưu trữ này (được phiên bản, mọi người sẽ có nó),
  2. .git/info/exclude chỉ áp dụng cho bản sao cục bộ của kho lưu trữ này (cục bộ, không được chia sẻ với người khác),
  3. ~/.gitignore áp dụng cho tất cả các kho lưu trữ trên máy tính của bạn (cục bộ, không chia sẻ với người khác).

3. thực sự yêu cầu thiết lập cấu hình trên máy tính của bạn:

git config --global core.excludesfile '~/.gitignore'

2
Vâng, tôi cũng đọc nó, nhưng muốn có được một viễn cảnh thực tế hơn (thế giới thực) :-)
Parag

Blog được liên kết gọi nhầm tệp .git/info/excludes, khi cần .git/info/exclude, như được xác nhận bởi tài liệu mà nó liên kết đến.
mwfearnley

13
(spoiler: cách thứ ba là bỏ qua toàn cầu máy tính thông qua cài đặt trong ~ / .gitconfig)
hmijail thương tiếc những người từ chức

@hmijail: cảm ơn, tôi đã bao gồm nhận xét của bạn trong câu trả lời này
LeGEC

12

Chỉ để cung cấp trải nghiệm (thế giới thực) của chúng tôi: chúng tôi đã bắt đầu sử dụng .git / thông tin / loại trừ khi chúng tôi phải tùy chỉnh một số tệp cấu hình trên mỗi môi trường phát triển nhưng vẫn muốn nguồn được duy trì trong repo và có sẵn cho các nhà phát triển khác.

Bằng cách này, các tệp cục bộ, một khi được sao chép và sửa đổi có thể được loại trừ khỏi các xác nhận mà không ảnh hưởng đến các tệp gốc trong repo nhưng không nhất thiết bị bỏ qua trong repo.


4

Sử dụng .gitignoređể bỏ qua các quy tắc dành riêng cho dự án . Sử dụng excludehoặc một tệp bỏ qua toàn cầu để bỏ qua các quy tắc dành riêng cho môi trường của bạn .

Ví dụ: các tệp bỏ qua toàn cầu của tôi bỏ qua các tệp tạm thời được tạo bởi bất kỳ trình soạn thảo nào tôi đang sử dụng quy tắc đó dành riêng cho môi trường của tôi và có thể khác với một số nhà phát triển khác trong cùng dự án (có lẽ họ sử dụng trình chỉnh sửa khác). OTOH, .gitignorecác tệp dự án của tôi bỏ qua những thứ như khóa API và xây dựng các tạo phẩm của chúng dành cho dự án và phải giống nhau cho mọi người trong dự án.

cái đó có giúp ích không?

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.