Git là gì? Những kiến thức cơ bản về Git
Git là một Distributed Version Control System (DVCS) – hệ thống quản lý phiên bản phân tán, miễn phí và mã nguồn mở (free & open source). Git giúp bạn theo dõi lịch sử thay đổi của dự án, quay lại các phiên bản cũ khi cần, và phối hợp làm việc nhóm hiệu quả.
1) Git khác gì so với các VCS kiểu cũ?
Hầu hết các hệ thống kiểm soát phiên bản truyền thống như CVS lưu trữ lịch sử theo kiểu file-based changes – tức là lưu các thay đổi áp dụng theo thời gian.
Nói đơn giản:
Hệ thống kiểu CVS thường lưu “từ phiên bản trước → thay đổi gì → ra phiên bản sau”.
Cách này thường được gọi là delta-based systems.
- Git thì sao?
Git không lưu theo dạng delta như vậy. Thay vào đó, Git lưu dữ liệu giống như một chuỗi snapshots (ảnh chụp trạng thái).
Bạn có thể hình dung Git như một mini filesystem:
Mỗi lần bạn commit là một lần Git tạo ra một snapshot hoàn chỉnh của toàn bộ dự án ở thời điểm đó.
Những thay đổi “chính thức và vĩnh viễn” trong project được ghi nhận thông qua commit kèm commit message (mô tả bạn đã thay đổi gì).
Nhờ cách lưu dạng snapshot, Git thường rất mạnh ở việc:
- quản lý lịch sử
- Tạo/ghép nhánh (branch/merge)
- Xử lý thay đổi nhanh: so sánh, xem lịch sử, chuyển nhánh, truy xuất phiên bản, commit…
2) Git Repository là gì? Vì sao thư mục .git quan trọng?
Một Git repository chứa toàn bộ:
- Lịch sử phiên bản (commit history)
- Cấu hình (configuration)
- Metadata phục vụ việc tracking.
Khi bạn initialize Git trong một project, ví dụ
git init
Git sẽ tạo một thư mục ẩn có tên là:
.git
Thư mục .git chính là “trái tim” của Git trong project:
- Nó lưu toàn bộ thông tin Git cần để tracking: commit, snapshot, con trỏ (pointers), record thay đổi, và các metadata liên quan.
- Nó nằm bên trong thư mục project, và vì bắt đầu bằng dấu . nên thường bị ẩn trên hệ điều hành.
Nếu bạn xóa thư mục .git, bạn sẽ:
- Mất toàn bộ lịch sử commit
- Mất khả năng tracking của Git
project lúc đó chỉ còn là một “thư mục code bình thường” trên máy bạn.
3) 3 trạng thái chính của Git: Modified – Staged – Committed
Khi làm việc với Git, file của bạn thường rơi vào 3 trạng thái cốt lõi:
- Modified: Bạn đã chỉnh sửa file nhưng chưa lưu thay đổi đó vào database của Git (chưa commit).
- Staged: Bạn đã đánh dấu (stage) file thay đổi và đưa nó vào danh sách “chuẩn bị commit”. Nói cách khác: file đã sẵn sàng để trở thành một phần của snapshot commit tiếp theo. (git add)
- Committed: Dữ liệu đã được lưu vĩnh viễn vào local database của Git (tức là đã có commit ghi nhận).
4) 3 khu vực tương ứng: Working Directory – Staging Area – Git Directory
Ba trạng thái ở trên tương ứng với ba “khu vực” trong một project Git:
a. Working Directory
Là nơi bạn chỉnh sửa file trực tiếp - chứa file có trạng thái Modified.
Có thể chứa:
tracked files (Git đang theo dõi) và untracked files (Git chưa theo dõi)
Bạn có thể hiểu working directory là thư mục project (parent directory) chứa toàn bộ source code, bên trong có thể có sub-folder module, sub-module, và các file code.
Đây là nơi bạn code hằng ngày.
b. Staging Area
Là khu vực “trung gian” chứa các thay đổi đã được stage - chứa file có trạng thái Staged.
Khi bạn chọn những thay đổi nào sẽ đi vào commit tiếp theo, bạn đang làm việc với staging area.
Staging area rất quan trọng vì nó cho phép bạn commit theo “nhóm thay đổi có ý nghĩa” thay vì commit tất cả mọi thứ đang modified một cách lộn xộn.
c. Git Directory (Local Repository)
Chính là thư mục .git mà ta đã nói ở trên - chưa file có trạng thái Committed.
Nó chứa toàn bộ:
- Commit history
- Snapshots
- Record và metadata phục vụ tracking.
5) Các trạng thái “nhỏ” giữa Working Directory và Staging Area
Ngoài 3 trạng thái chính (Modified–Staged–Committed), trong Working Directory file còn có thể ở các trạng thái:
Untracked: File mới tạo, Git chưa theo dõi.
Unmodified: File đã được Git theo dõi (tracked) và chưa thay đổi gì so với commit gần nhất.
Modified: File đã tracked, nhưng bạn đã chỉnh sửa nội dung và chưa stage/commit.
6) Kết luận
Nếu phải tóm gọn kiến thức Git cơ bản theo một cách dễ nhớ:
Git lưu lịch sử theo dạng snapshots, không phải chỉ lưu “delta thay đổi”.
.git là repository cục bộ, chứa toàn bộ lịch sử và thông tin tracking.
Quy trình làm việc điển hình:
- Sửa code trong Working Directory → (Modified, Untracked, Unmodified)
- Chọn thay đổi vào Staging Area → (Staged)
- Lưu thành phiên bản trong Git Directory → (Committed)
Nắm chắc “3 trạng thái – 3 khu vực” là bạn đã có nền tảng rất vững để học tiếp về branch, merge, remote, và workflow làm việc nhóm.
All rights reserved