1. Git là gì?

Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS) được sử dụng để quản lý, theo dõi và kiểm soát các thay đổi trong mã nguồn của một dự án. Git giúp lập trình viên lưu lại lịch sử phát triển của project, biết được những thay đổi đã được thực hiện, ai thực hiện thay đổi và có thể khôi phục lại các phiên bản trước đó khi cần thiết.

Trong quá trình phát triển phần mềm, source code thường xuyên được chỉnh sửa, bổ sung và cập nhật. Nếu chỉ lưu code bằng cách sao chép nhiều thư mục khác nhau thì  khó quản lý và dễ xảy ra mất dữ liệu hoặc nhầm lẫn giữa các phiên bản. Git giải quyết vấn đề này bằng cách tạo ra một hệ thống quản lý lịch sử thay đổi có tổ chức.

Git không chỉ được sử dụng để lưu trữ code mà còn có thể quản lý nhiều loại tệp khác trong một dự án như tài liệu, file cấu hình, script, tài nguyên dự án và các tệp liên quan khác.

2. Mục đích của Git

Mục đích chính của Git là giúp quá trình phát triển phần mềm trở nên có tổ chức, an toàn và dễ kiểm soát hơn.

Git cho phép lập trình viên lưu lại từng giai đoạn phát triển của dự án. Mỗi lần thực hiện một nhóm thay đổi quan trọng, lập trình viên có thể tạo một commit để ghi nhận trạng thái của source code tại thời điểm đó.

Ví dụ, một dự án có thể trải qua quá trình:

Khởi tạo project → tạo giao diện → thêm chức năng đăng nhập → thêm database → sửa lỗi → hoàn thiện chức năng.

Mỗi giai đoạn có thể được lưu lại Git. Sau này có lỗi, lập trình viên có thể kiểm tra lịch sử để xác định thay đổi gây ra lỗi hoặc quay lại một phiên bản ổn định trước đó.

3. Git hoạt động như thế nào?

Git hoạt động dựa trên việc theo dõi các thay đổi trong repository. Khi một project được đưa vào Git, Git sẽ theo dõi trạng thái của các file trong project và cho phép lập trình viên lựa chọn những thay đổi nào được lưu lại.

Quá trình làm việc cơ bản thường :

Working Directory → Staging Area → Repository

Working Directory

Đây là nơi chứa source code mà lập trình viên đang trực tiếp chỉnh sửa. Khi tạo, sửa hoặc xóa file, những thay đổi này trước tiên xuất hiện trong Working Directory.

Staging Area

Staging Area là khu vực trung gian dùng để lựa chọn những thay đổi sẽ được đưa vào commit.

Lập trình viên có thể chọn toàn bộ thay đổi hoặc chỉ chọn một số file nhất định.

Repository

Repository là nơi Git lưu trữ lịch sử của project và các commit. Khi một thay đổi được commit, Git sẽ ghi nhận một phiên bản mới của project vào repository.

Quá trình có thể hình dung:

Chỉnh sửa code → Git Add → Git Commit

Sau đó, nếu sử dụng repository từ xa:

Git Push → Remote Repository

4. Repository là gì?

Repository, thường được gọi tắt là Repo, là nơi chứa source code cùng với lịch sử thay đổi được Git quản lý.

Repository có thể tồn tại trên máy tính cá nhân hoặc trên một máy chủ trực tuyến.

Có hai loại thường gặp:

  • Local Repository: Repository nằm trên máy tính của lập trình viên.
  • Remote Repository: Repository được lưu trữ trên một máy chủ hoặc nền tảng trực tuyến.

Ví dụ, GitHub có thể được sử dụng để lưu trữ Remote Repository của một dự án.

5. Commit là gì?

Commit là một bản ghi nhận các thay đổi của source code tại một thời điểm cụ thể.

Có thể hiểu commit giống như một nơi lưu phiên bản của project. Mỗi commit thường đi kèm với một nội dung mô tả để cho biết thay đổi đó là gì.

Ví dụ:

Commit 1: Tạo project
Commit 2: Thêm giao diện đăng nhập
Commit 3: Thêm chức năng đăng ký
Commit 4: Sửa lỗi đăng nhập

Nhờ commit, Git có thể xây dựng lịch sử phát triển của project. Lập trình viên có thể xem các commit trước đó, so sánh thay đổi hoặc khôi phục về trạng thái cũ khi cần.

6. Branch là gì?

Branch là một nhánh phát triển trong Git. Branch cho phép lập trình viên phát triển một tính năng hoặc thực hiện thay đổi mà không làm ảnh hưởng trực tiếp đến nhánh chính của project.

Thông thường, một project có thể có nhánh chính như main. Khi muốn phát triển chức năng mới, lập trình viên có thể tạo một branch riêng.

Ví dụ:

main
 ├── feature/login
 ├── feature/register
 └── feature/payment

Mỗi branch có thể được sử dụng cho một chức năng hoặc một nhiệm vụ khác nhau.

Sau khi hoàn thành và kiểm tra, branch có thể được merge vào branch chính.

7. Merge là gì?

Merge là quá trình kết hợp những thay đổi từ một branch vào branch khác.

Ví dụ, lập trình viên tạo branch feature/login để phát triển chức năng đăng nhập. Sau khi hoàn thành, các thay đổi từ branch này có thể được merge vào main.

Điều này giúp các thành viên trong nhóm phát triển những phần khác nhau của project một cách độc lập, sau đó kết hợp chúng thành một phiên bản hoàn chỉnh.

Trong một số trường hợp, khi hai branch cùng chỉnh sửa một phần code theo những cách khác nhau, Git có thể xảy ra merge conflict. Khi đó, lập trình viên phải kiểm tra và lựa chọn cách kết hợp code phù hợp.

8. Git trong phát triển phần mềm nhóm

Một trong những vai trò quan trọng nhất của Git là hỗ trợ làm việc nhóm.

Trong một dự án có nhiều lập trình viên, mỗi người có thể đảm nhận một chức năng khác nhau. Thay vì cùng chỉnh sửa trực tiếp một phiên bản code duy nhất, mỗi người có thể tạo branch riêng để phát triển phần việc của mình.

Ví dụ:

  • Developer A phát triển chức năng đăng nhập.
  • Developer B phát triển chức năng đăng ký.
  • Developer C phát triển giao diện.
  • Developer D xử lý database.

Sau khi hoàn thành, các thay đổi được kiểm tra và hợp nhất vào project chính.

Nhờ đó, Git giúp giảm nguy cơ ghi đè code của nhau và giúp quá trình phát triển trở nên rõ ràng hơn.

 

Bài viết khác

TÌM HIỂU VỀ SCRUM

Scrum là gì? Scrum là một framework được sử dụng để tổ chức và quản lý công việc theo cách tiếp cận Agile. Scrum thường được sử dụng trong phát triển phần mềm, đặc biệt là những dự án có nhiều công việc và yêu cầu có thể thay đổi trong quá trình thực hiện. […]

TÌM HIỂU VỀ MÔ HÌNH WATERFAL

Waterfall là gì? Waterfall hay còn gọi là mô hình Thác nước, là một mô hình phát triển phần mềm dựa trên quy trình tuần tự và liên tiếp. Các giai đoạn trong dự án được thực hiện theo một trình tự nhất định, giai đoạn sau chỉ bắt đầu khi giai đoạn trước đã […]

TÌM HIỂU VỀ MÔ HÌNH KANBAN

TÌM HIỂU VỀ MÔ HÌNH KANBAN Kanban là gì? Kanban là một phương pháp quản lý và cải tiến công việc, trong đó công việc được trực quan hóa để các thành viên có thể dễ dàng theo dõi trạng thái và tiến độ của từng công việc. Trong phát triển phần mềm, Kanban thường […]

TÌM HIỂU VỀ MÔ HÌNH AGILE

TÌM HIỂU VỀ MÔ HÌNH AGILE Tổng quan về Agile Agile là một cách làm trong phát triển phần mềm, được sử dụng để giúp nhóm làm việc linh hoạt hơn trong quá trình xây dựng sản phẩm. Điểm em thấy dễ hiểu nhất ở Agile là không nhất thiết phải làm toàn bộ dự […]

Kanban

Kanban là gì? Kanban là một phương pháp quản lý công việc tập trung vào việc trực quan hóa công việc, kiểm soát lượng công việc đang thực hiện và cải thiện dòng chảy của công việc. Kanban giúp team nhìn thấy toàn bộ công việc đang ở trạng thái nào, công việc nào đang […]

Scrum

Scrum là gì? Scrum là một framework được sử dụng để tổ chức và quản lý quá trình phát triển sản phẩm, đặc biệt phổ biến trong phát triển phần mềm. Scrum giúp một team biến những nguyên tắc của Agile thành một cách làm việc cụ thể hơn. Nếu Agile là tư duy, thì […]