Bạn có nên cam kết .gitignore vào repos Git không?


497

Bạn có nghĩ rằng đó là một thực hành tốt để cam kết .gitignore vào một repo Git?

Một số người không thích nó, nhưng tôi nghĩ nó tốt khi bạn có thể theo dõi lịch sử của tập tin. Phải không?


38
nếu không bạn không, hãy đặt .gitignore vào .gitignore ...
CharlesB

Bản sao có thể có của Bỏ qua tệp .gitignore
Michael Freidgeim

Câu trả lời:


489

Thông thường có, .gitignorerất hữu ích cho tất cả những ai muốn làm việc với kho lưu trữ. Đôi khi, bạn sẽ muốn bỏ qua những thứ riêng tư hơn (có thể bạn thường tạo ra LOGhoặc một cái gì đó. Trong những trường hợp đó, bạn có thể không muốn ép buộc điều đó với bất kỳ ai khác.


137
+1 "Những điều riêng tư" có thể được đề cập trong $GIT_DIR/info/excludehoặc ~/.gitconfigcác tệp nếu thích hợp.
VIẾT

5
Nếu bạn đã có một tệp được kiểm tra và bạn muốn bỏ qua nó, Git sẽ không bỏ qua tệp nếu bạn thêm quy tắc sau. Trong những trường hợp đó, bạn phải mở khóa tệp trước bằng cách chạy lệnh sau trong thiết bị đầu cuối của bạn:git rm --cached FILENAME
eli-bd

133

Bạn thường làm cam kết .gitignore. Trên thực tế, cá nhân tôi đi xa đến mức đảm bảo chỉ số của tôi luôn sạch sẽ khi tôi không làm việc gì đó. ( git statuskhông hiển thị gì cả.)

Có những trường hợp bạn muốn bỏ qua những thứ thực sự không phải là dự án cụ thể. Ví dụ: trình soạn thảo văn bản của bạn có thể tạo *~các tệp sao lưu tự động hoặc một ví dụ khác sẽ là các .DS_Storetệp được tạo bởi OS X.

Tôi muốn nói, nếu những người khác phàn nàn về những quy tắc đó làm lộn xộn bạn .gitignore, hãy bỏ chúng ra và thay vào đó hãy đưa chúng vào một tệp loại trừ toàn cầu.

Theo mặc định, tệp này nằm trong $XDG_CONFIG_HOME/git/ignore(mặc định là ~/.config/git/ignore), nhưng vị trí này có thể được thay đổi bằng cách đặt core.excludesfiletùy chọn. Ví dụ:

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

Chỉ cần tạo và chỉnh sửa tệp loại trừ toàn cầu theo nội dung trái tim của bạn; nó sẽ áp dụng cho mọi kho lưu trữ git mà bạn làm việc trên máy đó.


14
Bạn luôn có thể thêm # some commentcác dòng vào .gitignoretệp để giải thích lý do tại sao bạn bỏ qua một cái gì đó. Bình luận mỗi dòng là một chút overkill, nhưng tôi có đã phần dán nhãn # IDE (Eclipse), # OS (Mac OS X)# Generated (Perl). Theo cách đó, nếu ai đó muốn sử dụng một hệ điều hành hoặc IDE khác, họ có thể thêm một phần và tất cả chúng ta có thể chia sẻ.
Stuart R. Jefferys

9
giơ ngón tay cái lên "Cá nhân tôi đi xa để đảm bảo chỉ số của tôi luôn sạch sẽ khi tôi không làm việc gì đó (trạng thái git không hiển thị gì cả.)"
SGhosh

4
Nb. với Git hiện đại, giá trị mặc định core.excludesfile~/.config/git/ignore, tuân thủ Đặc tả thư mục cơ sở XDG
Jakub Narębski

1
+1 cho toàn cầu .gitignore- Rất có lợi khi những người bạn làm việc không đồng ý về nội dung của .gitignorecác tệp được đẩy hoặc liệu chúng có nên được đẩy hay không, và tất cả chúng ta đều sử dụng rất nhiều môi trường phát triển khác nhau tạo ra các loại tiếng ồn khác nhau.
Kreas

1
davidwalsh.name/global-gitignore một số thông tin khác về sự bỏ qua toàn cầu
Frode Akselsen

11

Tôi đặt commit .gitignore, một phép lịch sự cho những người khác có thể xây dựng dự án của tôi rằng các tệp sau có nguồn gốc và nên được bỏ qua.

Tôi thường làm một phép lai. Tôi muốn làm cho makefile tạo tệp .gitignore vì makefile sẽ biết tất cả các tệp được liên kết với dự án được tạo ra hoặc nếu không. Sau đó, có một dự án .gitignore cấp cao nhất mà bạn đăng ký, sẽ bỏ qua các tệp .gitignore được tạo bởi makefile cho các thư mục con khác nhau.

Vì vậy, trong dự án của tôi, tôi có thể có một thư mục con bin với tất cả các tệp thực thi được xây dựng. Sau đó, tôi sẽ tạo tệp tạo tệp .gitignore cho thư mục bin đó. Và trong thư mục trên cùng .gitignore liệt kê bin / .gitignore. Cái trên cùng là cái tôi kiểm tra.


0

Cam kết .gitignore có thể rất hữu ích nhưng bạn muốn chắc chắn rằng bạn không sửa đổi nó quá nhiều sau đó đặc biệt là nếu bạn thường xuyên chuyển đổi giữa các chi nhánh. Nếu bạn có thể gặp trường hợp các tệp bị bỏ qua trong một nhánh chứ không phải ở nhánh khác, buộc bạn phải xóa hoặc đổi tên các tệp trong thư mục công việc của mình vì kiểm tra không thành công vì nó sẽ ghi đè lên tệp không được theo dõi.

Vì vậy, có, hãy cam kết .gitignore của bạn, nhưng không phải trước khi bạn chắc chắn rằng nó sẽ không thay đổi nhiều sau đó.


-6

Đó là một thực tiễn tốt cho .gitignore ít nhất các sản phẩm xây dựng của bạn (chương trình, * .o, v.v.).


11
Điều đó đã không trả lời câu hỏi: .gitignore bản thân nó có nên là " .gitignore'd" không?
Charles Wood

6
Chú ý, đó không phải là câu hỏi, và điều này không trả lời những gì được hỏi: "là [nó] một thói quen tốt để cam kết .gitignore thành một repo Git?".
papercowboy

5
@cayuu Tôi tin rằng câu trả lời nói rằng "đó là một cách thực hành tốt .gitignore" xyz, tôi không thấy cách nó trả lời câu hỏi. câu hỏi là nếu .gitignore nên được kiểm soát phiên bản hay không.
chụp đêm
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.