Trang chủ Thủ Thuật Tệp .gitignore là gì và bạn định cấu hình nó như thế...

Tệp .gitignore là gì và bạn định cấu hình nó như thế nào?

0
49

Tệp .gitignore là gì và bạn định cấu hình nó như thế nào?

Git logo

Tệp .gitignore là một tệp văn bản được đặt trong kho lưu trữ git của bạn. Nó yêu cầu git không theo dõi các tệp và thư mục nhất định mà bạn không muốn tải lên kho lưu trữ chính của mình. Nó có rất nhiều cách sử dụng và hầu như bạn sẽ luôn cần phải cấu hình nó nếu bạn đang thiết lập một repo mới.

Điểm của .gitignore là gì?

Trong hầu hết các dự án, có sự khác biệt giữa mã / cấu hình và các tệp được tạo từ mã hoặc cấu hình đó. Cái sau thường không hữu ích và thường có thể bị bỏ qua.

Thông thường, bạn chỉ muốn mã và cấu hình được theo dõi thông qua git. Điều này là do các tệp được tạo là tạm thời và nếu bạn xóa chúng, bạn chỉ có thể tạo lại chúng. Thường không có ích gì khi tải chúng lên, vì chúng sẽ làm phức tạp mọi thứ và gây ra xung đột hợp nhất không cần thiết.

Đây là một định nghĩa rộng, vì vậy chúng ta hãy xem xét một ví dụ. Trong các dự án Node JS, có một thư mục được gọi là node_modules chứa tất cả các gói bên ngoài mà mã của bạn cần để chạy. Bạn có thể xóa thư mục này và xây dựng lại hoàn toàn bằng cách chạy npm install , sử dụng package.json để tìm kiếm các gói.

Vậy mục đích của việc có node_modules trong Git là gì? Thực sự không có cái nào, vì nó phức tạp hơn, có thể gây ra vấn đề và thậm chí có thể làm tăng đáng kể kích thước của Git repo trong nhiều trường hợp.

Quảng cáo

Nếu bạn bỏ qua toàn bộ thư mục, tất cả đồng nghiệp của bạn vẫn có thể tạo bản sao cục bộ của riêng họ từ tệp package.json Vì vậy, thay vào đó, chỉ nên theo dõi package.json Hầu hết những thứ được thêm vào .gitignore đều tuân theo mô hình này. Tạo phần mềm, như ./bin/ , không được cam kết vì chúng là kết quả trực tiếp của chính mã.

Những thứ khác cũng có thể được thêm vào .gitignore để thuận tiện. MacOS tạo các tệp hệ thống được gọi là .DS_store mà bạn luôn có thể bỏ qua. Có lẽ bạn lưu trữ các khóa API trong .env/ mà bạn không muốn bị theo dõi trong kiểm soát nguồn, bạn cũng có thể thêm chúng. Bộ nhớ đệm, nhật ký và các đầu ra khác thường có thể bị bỏ qua.

Sử dụng .gitignore

Bạn sẽ cần tạo một tệp có tên .gitignore , không có phần mở rộng, trong thư mục gốc của dự án nơi chứa .git của bạn. Bạn có thể thực hiện việc này từ trình duyệt tệp của mình hoặc từ dòng lệnh với bất kỳ trình soạn thảo văn bản CLI nào:

nano .gitignore

83f5cf27

Bạn có thể định cấu hình điều này theo nhiều cách, nhưng các công cụ chính mà bạn có là:

  • * ký tự đại diện, khớp với bất kỳ văn bản nào và có thể được sử dụng để khớp với bất kỳ thư mục nào hoặc bất kỳ tệp nào bất kể phần mở rộng là gì.
  • ! , hoạt động như một loại danh sách trắng phủ định tệp đã bị loại trừ trước đó. Lợi ích chính của điều này là nó chỉ đưa tệp vào danh sách trắng nếu tệp bị loại trừ trực tiếp và sẽ không hoạt động đối với các tệp trong thư mục đã bị loại trừ hoàn toàn.
  • ** , khớp với bất kỳ thứ gì đệ quy vào thư mục. Ví dụ: **/*.json sẽ khớp với bất kỳ tệp JSON nào bất kể nó ở đâu và src/** sẽ khớp với mọi tệp trong thư mục một cách đệ quy. Điều này rất hữu ích khi bạn muốn lập danh sách trắng và không bỏ qua toàn bộ thư mục.

Ví dụ: một gitignore Node JS có thể trông giống như sau:

node_modules /
xây dựng/
npm-debug.log
.env
.env.test
.env.production
.DS_Store
.npm
.eslintcache
nhật ký /
* .log
npm-debug.log *

Danh sách trắng các tệp với ! có thể rất hữu ích cho nhiều cấu hình. Ví dụ: trong một dự án của tôi, tôi đã có một công cụ gọi là steamcmd để tải các phần phụ thuộc cho máy chủ trò chơi từ Steam. Công cụ này được đóng gói thành một tệp thực thi di động duy nhất, nhưng nó tạo ra rất nhiều rác mà tôi không muốn bị theo dõi trong Git.

Quảng cáo

Giải pháp là bỏ qua mọi thứ trong thư mục, nhưng đưa tệp thực thi vào danh sách trắng. Điều này sẽ hoạt động đối với bất kỳ tệp thực thi có thể di chuyển nào mở rộng như thế này hoặc tạo ra rác không cần thiết trong thư mục.

Project / steamcmd / **
! Project / steamcmd / steamcmd.exe

gitignore cũng sử dụng một số mẫu hình cầu Unix khác để khớp các chuỗi, chẳng hạn như dấu chấm hỏi để khớp một ký tự hoặc [az] sẽ khớp với các bộ ký tự.

Bạn cũng có thể viết nhiều .gitignore có thể khớp các tệp liên quan với chính chúng. Điều này không thực sự quá hữu ích vì bạn chỉ có thể bao gồm các quy tắc trong tệp gốc, dễ theo dõi hơn, nhưng nó có thể giúp lặp lại mã trong một số trường hợp. Tuy nhiên, cách giải quyết là sử dụng các bộ ký tự để khớp với nhiều thư mục. Ví dụ: đối sánh thư mục chữ hoa và chữ thường với một tập hợp:

# Xây dựng kết quả
[Dd] ebug /
[Dd] ebugPublic /
[Rr] elease /
[Rr] tăng /

Nếu bạn đang gặp sự cố với .gitignore của mình, bạn có thể gỡ lỗi nó bằng lệnh check-ignore Git:

git check-ignore -v testfile.json

.Gitignore toàn cầu

Git cũng có cài đặt chung cho .gitignore , nhưng nó thực sự không nên được sử dụng trong hầu hết các trường hợp. Điều này là do .gitignore toàn cầu trên máy tính của bạn không áp dụng cho đồng nghiệp của bạn và chỉ áp dụng cho các cam kết được thực hiện với phiên bản Git của bạn.

Nếu bạn vẫn muốn đặt nó, bạn có thể làm như vậy bằng lệnh sau:

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

Buộc cam kết hoặc lưu trữ các tệp bị bỏ qua

Buộc cam kết nói chung là một ý tưởng tồi – bạn có thể nên thêm một danh sách trắng cho tệp cụ thể này, vì sau khi đã cam kết, các bản cập nhật cho tệp này sẽ không được theo dõi. Tuy nhiên, nếu bạn muốn xác nhận một cái gì đó theo cách thủ công, bạn có thể chạy git add với tham số --force

git add -f debug.log
Quảng cáo

Tương tự, git stash cũng có thể lưu trữ các thay đổi cục bộ vào các tệp bị bỏ qua, điều này thực sự có thể hữu ích vì nó sẽ không ảnh hưởng đến repo từ xa:

git stash - tất cả

How to Deploy Static Websites For Free With Surge.sh

Cách triển khai các trang web tĩnh miễn phí với Surge.sh

How to Use ltrace to Trace Library Calls

Cách sử dụng ltrace để theo dõi cuộc gọi thư viện

How to Add Social Media Embeds To Articles In WordPress

Làm thế nào để thêm phương tiện truyền thông xã hội nhúng vào bài viết trong WordPress

What Are Git Pull Requests, And How Do You Use Them?

Yêu cầu kéo Git là gì, và bạn sử dụng chúng như thế nào?

How to Migrate Away From GitLab Managed Kubernetes Apps

Cách di chuyển khỏi ứng dụng Kubernetes được quản lý trên GitLab

Why Compliance Complacency is Another Form of Technical Debt

Tại sao Tuân thủ Sự tự mãn là một dạng Nợ kỹ thuật khác

Dịch từ: https://www.cloudsavvyit.com/12905/what-is-a-gitignore-file-and-how-do-you-configure-it/

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây