HocTotGit.io

Git cơ bản (Fundamentals)
  • Version Control là gì?
  • Git là gì?
  • Cài đặt và cấu hình Git
  • Quiz
  • Thuật ngữ cốt lõi
  • Tạo repository
  • Theo dõi file
  • Quy trình commit
  • Quiz
  • Kiểm tra log
  • Hủy thay đổi
  • Cập nhật commit
  • Quiz
  • Lý thuyết về nhánh
  • Tạo và chuyển nhánh
  • Merge nhánh
  • Giải quyết merge conflict
  • Quiz
Liên kết
Blog
Hỗ trợ

Email: work.lamsun@gmail.com

Yêu thích nền tảng

Hãy chia sẻ ý kiến của bạn

HocTotGit.io

© 2026 HocTotGit.

Git là gì?

Ở bài trước, chúng ta đã biết rằng Version Control mang lại nhiều lợi ích và không thể thiếu khi phát triển sản phẩm phần mềm. Bây giờ chúng ta sẽ tìm hiểu về Git - một Version Control System mạnh mẽ nhất hiện nay.

Hầu hết mọi mô tả công việc cho lập trình viên ở mọi cấp bậc ngày nay, đều có một dòng yêu cầu ngắn gọn đó là "Thành thạo Git". Vậy Git là gì, và tại sao nó lại trở thành tiêu chuẩn mặc định của ngành công nghiệp phần mềm?


1. Lịch sử ra đời

Câu chuyện về Git bắt đầu với Linus Torvalds, người cha đẻ của hệ điều hành Linux.

Linus Torvalds
Ảnh: Tác giả Linus Torvalds

Vào đầu những năm 2000, dự án phát triển Linux (Linux Kernel) là một dự án mã nguồn mở khổng lồ với hàng ngàn cộng tác viên trên toàn cầu. Để quản lý mớ hỗn độn đó, họ sử dụng một version control system thương mại tên là BitKeeper (họ được dùng miễn phí với một số điều kiện).

Vấn đề nảy sinh: Năm 2005, mối quan hệ giữa cộng đồng Linux và công ty sở hữu BitKeeper tan vỡ. BitKeeper thu hồi giấy phép miễn phí.

Linus Torvalds rơi vào thế kẹt. Ông cần một Version Control System mới ngay lập tức để thay thế, nhưng không có công cụ nào thời đó đáp ứng được các yêu cầu khắt khe của ông: phải cực nhanh, phải hỗ trợ làm việc phân tán (distributed) tốt, và phải miễn phí/mã nguồn mở.

"…how do I do something that does even better than BitKeeper does, but doesn’t do it the way BitKeeper does it." -- Linus Torvalds

Thay vì thỏa hiệp, Linus đã làm điều mà chỉ các thiên tài mới làm: Ông "biến mất" trong khoảng một tuần nghỉ lễ, tự tay viết ra Version Control System của riêng mình. Và thế là Git ra đời, nó được sinh ra từ nhu cầu quản lý một dự án siêu lớn, siêu phức tạp, bởi một người cực kỳ khó tính về hiệu suất. Đó là lý do tại sao Git mạnh mẽ đến vậy.


2. Cách Git hoạt động

2.1. Snapshots (Ảnh chụp), không phải Deltas (Sự khác biệt)

Điều khiến Git khác biệt so với các hệ thống cũ nằm ở cách nó "suy nghĩ" về dữ liệu. Các hệ thống cũ (như SVN) lưu trữ dữ liệu dưới dạng một danh sách các thay đổi (deltas) của từng file theo thời gian. Ví dụ: "Ở phiên bản 2, dòng 10 của file A được thêm vào".

Git thì khác. Git coi dữ liệu như một tập hợp các snapshots của toàn bộ hệ thống tập tin. Mỗi khi lưu lại trạng thái dự án (commit), Git "chụp một bức ảnh" toàn bộ các file tại thời điểm đó và lưu trữ tham chiếu đến bức ảnh đó.

Nếu một file không thay đổi, Git sẽ không lưu lại file đó một lần nữa mà chỉ dẫn liên kết đến file gốc đã lưu trước đó để tiết kiệm dung lượng.

Git Snapshots vs Delta Storage

Ảnh minh họa: Git lưu ảnh chụp toàn bộ tại mỗi thời điểm

2.2. Git là một hệ thống distributed

Một trong những điểm nổi bật quan trọng nhất của Git chính là: đây là một hệ thống phân tán (distributed).

Điều này có nghĩa là mọi thao tác làm việc với Git — như xem lịch sử, tạo nhánh, sửa đổi, commit... — đều được thực hiện ngay trên máy tính cá nhân, hoàn toàn không phụ thuộc vào kết nối Internet hoặc máy chủ trung tâm. Git lưu trữ toàn bộ lịch sử và dữ liệu của dự án một cách đầy đủ ở local, thay vì chỉ giữ một phần như nhiều hệ thống đời cũ.

Vì là hệ thống phân tán, Git đặc biệt phù hợp với các dự án lớn, có nhiều người cùng phát triển và làm việc ở nhiều vị trí địa lý khác nhau.


3. Lợi ích vượt trội của Git

Tại sao Linus lại tạo ra Git như vậy? Nó mang lại những lợi ích gì?

  • Tốc độ và làm việc offline: Vì Git là hệ thống phân tán, nó không cần chờ mạng để "nói chuyện" với server mỗi khi muốn xem lịch sử hay tạo nhánh. Nó cực kỳ nhanh.
  • Toàn vẹn dữ liệu: Mọi thứ trong Git (mỗi file, mỗi commit, mỗi thư mục) đều được mã hóa bằng thuật toán SHA-1, tạo ra một mã hash duy nhất 40 ký tự. Nhờ cơ chế này, Git có thể phát hiện ngay lập tức bất kỳ thay đổi nào, dù chỉ là một ký tự vì hash sẽ hoàn toàn khác đi.
  • Phân nhánh (Branching): Tính năng này cho phép tạo ra các nhánh mới để phát triển dự án một cách nhanh và tốn ít dung lượng.

4. Phân biệt: Git vs. GitHub

Một sự nhầm lẫn phổ biến của người mới bắt đầu là đánh đồng Git với GitHub hay GitLab.

Công cụMô tả
Git

Là phần mềm được cài đặt trên máy tính để thực hiện các thao tác commit, branch, merge... mà không cần internet.

GitHub / GitLab

Là dịch vụ web (Cloud) giúp lưu trữ các Git repository trên mạng, giúp chia sẻ code với người khác và tích hợp các công cụ quản lý dự án.

Ta hoàn toàn có thể sử dụng Git để quản lý code ở local mà không cần đến GitHub. Nhưng để làm việc nhóm hiệu quả, cần một dịch vụ như GitHub để làm nơi tập trung code.


5. Sự thống trị của Git

Trong cuộc khảo sát của Stack Overflow Developer Survey 2022, khi được hỏi về Version Control System đang sử dụng, kết quả thật sự áp đảo:

Stack Overflow Survey 2022 - Version Control
Nguồn: Stack Overflow Developer Survey 2022
  • Git chiếm hơn 93%.
  • Các đối thủ khác chỉ còn là những con số lẻ.

Điều này khẳng định rằng trong thế giới phát triển phần mềm hiện đại, học Version Control đồng nghĩa với việc học Git.


Tổng kết

Git sinh ra từ nhu cầu giải quyết các vấn đề phức tạp của những dự án khổng lồ. Nó nhanh, mạnh mẽ, hoạt động offline và đảm bảo an toàn dữ liệu. Giờ đây, khi đã hiểu Git là gì và tại sao nó lại quan trọng, đã đến lúc chúng ta bắt tay vào thực hành.

Tiếp theo: Cài đặt Git