Câu hỏi Sự khác biệt giữa .gitignore và .gitkeep là gì?


Sự khác biệt giữa .gitignore và .gitkeep? Chúng có cùng tên với một cái tên khác, hay cả hai đều có chức năng khác nhau? Tôi dường như không thể tìm thấy nhiều tài liệu về .gitkeep.


1433
2017-08-29 12:11


gốc




Các câu trả lời:


.gitkeep không phải là tài liệu, bởi vì nó không phải là một tính năng của Git.

Git không thể thêm một thư mục hoàn toàn trống. Những người muốn theo dõi các thư mục trống trong Git đã tạo ra quy ước đặt các tệp được gọi là .gitkeep trong các thư mục này. Các tập tin có thể được gọi là bất cứ điều gì; Git gán không có ý nghĩa đặc biệt cho tên này.

Có một quy ước cạnh tranh về việc thêm .gitignore tập tin vào các thư mục trống để có được chúng theo dõi, nhưng một số người thấy điều này là khó hiểu vì mục đích là để giữ cho các thư mục trống, không bỏ qua chúng; .gitignore cũng được sử dụng để liệt kê các tệp mà Git sẽ bỏ qua khi tìm kiếm các tệp không được theo dõi.


2620
2017-08-29 12:20



Nó sẽ không phải là một giải pháp tốt hơn để đặt một README tệp trong thư mục con rỗng có chứa một chút thông tin về thư mục con đó sẽ được sử dụng để làm gì? Có vẻ khó hiểu khi có tệp .gitkeep đó không thực sự là một phần của git. - tamouse
@tamouse nhiều lần, đường dẫn của thư mục trống (ví dụ: tên của các thư mục) là đủ để thể hiện mục đích của nó (ví dụ: mẫu / bộ nhớ cache, tải lên / dấu vân tay, v.v ...). Trong những trường hợp này, việc đưa một readme vào trong mỗi trường hợp này sẽ trở nên thừa. - Halil Özgür
những người muốn theo dõi các thư mục trống sẽ được chỉ ra trong README rằng thư mục phải được tạo hoặc tạo các thư mục bằng cách sử dụng công cụ xây dựng của họ hoặc bất kỳ công cụ nào yêu cầu thư mục tồn tại; / - Rudolf Olah
@tamouse, @omouse: A .gitignore tập tin với hai dòng: * và !.gitignore là đủ rõ ràng để truyền đạt những gì đang diễn ra. Nếu cần thêm chi tiết, hãy thêm nhận xét vào đầu tệp bằng cách sử dụng #  cú pháp. - Droogans
Cần lưu ý rằng khung Rails phổ biến đã thay đổi một chút quy ước này bằng cách sử dụng .keep tệp thay vì .gitkeep để bảo vệ các thư mục trống này, vì git không phải là hệ thống kiểm soát nguồn duy nhất không theo dõi các thư mục trống. Xem thêm chi tiết tại đây: github.com/rails/rails/issues/2800 - Claudio Floreani


.gitkeep chỉ là một trình giữ chỗ. Một tệp giả, vì vậy git sẽ không quên thư mục, vì git chỉ theo dõi các tệp.


Nếu bạn muốn một thư mục rỗng và chắc chắn rằng nó vẫn 'sạch' cho git, tạo ra một .gitignore chứa các dòng sau:

# .gitignore sample 
###################

# ignore all files in this dir...
*

# ... except for this one.
!.gitignore

Nếu bạn muốn chỉ có một loại tệp được hiển thị cho git, đây là ví dụ về cách lọc mọi thứ, ngoại trừ .gitignore và tất cả .txt các tập tin:

# .gitignore to keep just .txt files
###################################

# filter everything...
*

# ... except the .gitignore...
!.gitignore

# ... and all text files.
!*.txt

('#' cho biết ý kiến.)


222
2017-07-20 13:02



Tôi thích thực hành này. Nếu có mã nguồn trong các thư mục này sẽ không cần đến .gitkeep và nói chung nó là tạm thời / bộ nhớ cache / nội dung người dùng trong khi thử nghiệm sẽ được tạo ra anyways khiến bạn phải cũng có .gitignore những tập tin - chrisan
Tại sao bạn cần ! ở đằng trước .gitignore ? Đó có phải là để thoát khỏi dấu chấm? - Will
@ Will - Không, ! phủ nhận phần sau, như nó thường làm trong lập trình. - sjas
Không cần phải đặt !.gitignore trong một tập tin bỏ qua git, hoặc thêm tập tin sau đó chỉnh sửa nó, hoặc buộc thêm nó với nội dung thích hợp ("*" để bỏ qua mọi thứ, hoặc không có gì để đơn giản bảo đảm thư mục tồn tại) ví dụ thêm. - AD7six
Từ liên kết của bạn: Since the git ignore file is already in the repo it is not necessary to not-ignore it - it is already tracked. ------ Nếu nó không phải là, và bạn không làm một bổ sung mạnh mẽ, bạn có thể quên nó. Trong các trường hợp tầm thường, không có vấn đề gì, nhưng nếu đó là một tệp lớn hơn, bạn có thể khó chịu. Sử dụng !.gitignore ngăn bạn tự bắn mình vào chân. Tôi thích nó, đã đốt cháy bản thân mình trong quá khứ. - sjas


.gitignore

là một tệp văn bản bao gồm một danh sách các tệp trong thư mục của bạn mà git sẽ bỏ qua hoặc không thêm / cập nhật trong kho lưu trữ.

.gitkeep

Kể từ khi git loại bỏ hoặc không thêm thư mục trống để repo một .gitkeep là loại hack (Tôi không nghĩ rằng nó chính thức được đặt tên như là một phần của git) để giữ thư mục trống trong repo.

chỉ cần làm một touch /path/to/emptydirectory/.gitkeep để thêm tệp và git bây giờ sẽ có thể duy trì thư mục này trong kho lưu trữ.


98
2017-08-29 12:21



Bạn có thể có nhiều .gitignorenhư bạn muốn, nếu bạn không muốn chỉ định đường dẫn đầy đủ đến mọi thư mục mỗi lần. - sjas
Tôi cố gắng đề cập đến danh sách các thư mục trống .gitkeep nhưng nó sẽ không theo dõi các thư mục trống, Chỉ theo dõi thư mục ở đâu .gitkeep tập tin tồn tại. tại sao như vậy ? - Pardeep Jain
.gitkeep không hoạt động như .gitignore. Nó không phải là một danh sách các thư mục để giữ lại. Nó chỉ đơn thuần là một tệp rỗng nằm trong thư mục mà bạn muốn giữ lại. Nó có thể được đặt tên bất cứ điều gì bạn muốn .keep, vv Vì vậy, bạn có thể có một thư mục như / foo / bar và các tập tin gitkeep sẽ được /foo/bar/.gitkeep - Jim Munro