---
title: "Gitignore là gì? Vì sao nên sử dụng .gitignore trong dự án Git?"
description: ".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"
canonical: "https://200lab.io/blog/gitignore-la-gi"
published: "2024-10-07T04:34:18Z"
updated: "2026-08-21T07:17:55Z"
authors: ["Tran Thuy Vy"]
tags: ["Backend", "Frontend"]
reading_minutes: 6
access: "public"
---

Bạn là developer, chắc chắn đã và đang làm việc với [Git](</blog/git-la-gi>) - 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. Chi tiết hơn các bạn có thể tham khảo tại [đây](</blog/git-la-gi>).

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.

![](https://assets.200lab.io/images/2024/12/05/gitignore-la-gi-gitignore-b1e06cfa3a5a5a25e8e1.webp)

`.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](</blog/ide-la-gi>) ([Visual Studio Code](</blog/visual-studio-code-la-gi-huong-dan-su-dung-vscode-cho-nguoi-moi>), 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. Bạn có thể tham khảo tại [đây](<https://github.com/github/gitignore>).

## 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.

Các bài viết liên quan:

- [Swagger là gì? Hướng dẫn Sử dụng Swagger cơ bản](</blog/swagger-la-gi>)
- [Postman là gì? Cách dùng Postman trong API testing](</blog/postman-la-gi>)
- [API Gateway là gì? Các chức năng chính của API Gateway](</blog/api-gateway-la-gi>)
- [CRUD là gì? Vì sao Developer cần phải thành thạo CRUD?](</blog/crud-la-gi>)
