Bạn là developer, chắc chắn đã và đang làm việc với Git – công cụ quản lý phiên bản. Trong quá trình viết code, bạn sẽ thấy rằng không phải tất cả các file trong dự án đều cần được theo dõi và lưu trữ trên Git.
Một số file như node_modules
, .env
, dist
, .DS_Store
,… thường không nhất thiết phải đẩy lên Git. Đây cũng chính là lý do mà .gitignore
ra đời.
1. Gitignore là gì?
Trước khi đi sâu vào .gitignore
, mình sẽ nói sơ qua về Git để các bạn có thể dễ dàng hình dung hơn.
Các developer sử dụng Git để theo dõi sự thay đổi của code. Mọi thay đổi trong code đều được lưu lại thành các “commit” giúp bạn dễ dàng quay lại các phiên bản trước đó, tăng khả năng làm việc nhóm hiệu quả hơn khi quản lý các nhánh (branch) khác nhau.
.gitignore
là file đơn giản nằm trong thư mục gốc của dự án Git, dùng để chỉ định các file hoặc là folder mà bạn muốn Git không theo dõi, không lưu repository. Điều này giúp kho Git gọn gàng và giảm thiểu khả năng lưu các tệp không cần thiết, chứa các thông tin nhạy cảm như mật khẩu, secret-key.
Ví dụ, trong quá trình build, dự án có các tệp như:
- File cấu hình IDE (Visual Studio Code, JetBrains,…)
- Folder
node_modules
trong các dự án Nodejs - File tạm thời (*.tmp, *.log)
- File cache hoặc build (dist/, build/)
Để tránh việc vô tình thêm những file này vào Git, bạn chỉ cần định nghĩa nó trong tệp .gitignore
.
2. Lợi ích của việc sử dụng .gitignore
2.1 Giảm dung lượng file lưu trữ trên Git
Trong dự án, số lượng các file do công cụ phát triển sinh ra có thể rất lớn. Sử dụng .gitignore
giúp bạn giảm thiểu số lượng file mà Git phải quản lý, từ đó giúp kho lưu trữ của bạn nhẹ hơn, nhanh hơn, và dễ quản lý hơn.
2.2 Tránh lưu trữ thông tin nhạy cảm
Một trong những nguy cơ lớn nhất khi làm việc với Git là việc vô tình push
các file chứa thông tin nhạy cảm lên kho lưu trữ công khai. Ví dụ như file chứa mật khẩu, secret-key, các thông tin cá nhân khác. Bạn nên định nghĩa những file này trong .gitignore
để giảm thiểu nguy cơ rò rỉ thông tin không mong muốn.
2.3 Quá trình hợp tác nhóm dễ dàng hơn
Trên thực tế, khi bạn làm việc trong một nhóm, không phải tất cả các thành viên trong team đều sử dụng cùng OS (hệ điều hành), IDE, các công cụ phát triển, các file cấu hình để kết nối database.
Thay vì đẩy tất cả những file đó lên Git, bạn có thể liệt kê trong .gitignore
để chỉ ra các file không cần theo dõi.
3. Hướng dẫn cách tạo và sử dụng .gitignore
3.1 Tạo file .gitignore
Để tạo file .gitignore
, bạn chỉ cần tạo file có tên là .gitignore
trong folder gốc của dự án Git.
3.2 Cú pháp trong .gitignore
Cú pháp của .gitignore
rất đơn giản. Dưới đây là một vài quy tắc cơ bản hay sử dụng nhất.
- Bỏ qua toàn bộ file hoặc folder: chỉ cần viết tên file hoặc folder mà bạn muốn bỏ qua.
node_modules/ dist/ .env
Với ví dụ trên, Git sẽ bỏ qua, không theo dõi 2 folder node_modules/
, dist/
và file .env
- Bỏ qua tất cả các file có phần mở rộng: sử dụng dấu sao
*
để đại diện cho mọi ký tự.
*.log *.tmp
Tất cả các file có phần mở rộng là .log
và .tmp
sẽ được bỏ qua.
- Bỏ qua tất cả các file trong folder con: sử dụng dấu gạch chéo
/
để xác định rõ folder hoặc file trong folder con.
/temp/*.log
Với dòng này sẽ chỉ bỏ qua các file .log
trong folder temp/
, mà không bỏ qua các file .log
ở ngoài folder này.
- Loại trừ file cụ thể: đôi lúc bạn chỉ muốn bỏ qua toàn bộ folder hoặc phần mở rộng, nhưng vẫn muốn Git theo dõi một file cụ thể trong đó. Bạn có thể sử dụng dấu chấm than
!
.
*.log !important.log
Dòng phía trên sẽ bỏ qua tất cả các file .log
, trừ file important.log
.
3.3 Sử dụng các mẫu sẵn file .gitignore từ Github
GitHub cung cấp một kho các file .gitignore
mẫu cho nhiều ngôn ngữ và các môi trường khác nhau.
4. Một số lưu ý khi sử dụng .gitignore
4.1 .gitignore không áp dụng cho các tệp đã được thêm vào Git
Một điều quan trọng cần lưu ý là .gitignore
chỉ có tác dụng với các tệp chưa được Git theo dõi. Nếu bạn đã commit tệp đó trước khi thêm nó vào .gitignore
, Git vẫn sẽ tiếp tục theo dõi tệp đó.
Để xóa file khỏi Git nhưng vẫn giữ nó trong folder làm việc, bạn có thể sử dụng lệnh:
git rm --cached <file>
4.2 Sử dụng nhiều .gitignore trong cùng một dự án
Bạn có thể tạo nhiều file .gitignore
trong cùng dự án, ở các folder khác nhau. Mỗi file .gitignore
sẽ chỉ ảnh hưởng đến folder nơi mà nó được đặt và các folder con. Điều này có thể rất hữu ích nếu bạn có các folder chứa những dữ liệu tạm thời hoặc build các phần khác nhau của dự án.
Chắc sẽ hơi khó hiểu chút, mình sẽ ví dụ đơn giản thế này. Nếu bạn có một folder assets/
trong đó chứa các file tạm thời, bạn có thể tạo file .gitignore
chỉ cho folder đó như thế này:
assets/.gitignore
5. Tổng kết
File .gitignore
giúp bạn quản lý các file chứa thông tin nhạy cảm, không cần thiết trong dự án Git của mình. Bằng cách cấu hình .gitignore
một cách hợp lý, bạn có thể giữ kho lưu trữ Git của mình gọn gàng, hiệu quả và an toàn hơn.
Việc hiểu và sử dụng .gitignore
không chỉ giúp bạn làm việc hiệu quả, mà còn giảm thiểu những rủi ro về rò rỉ thông tin nhạy cảm.