Git là gì?

Câu chuyện bắt đầu từ hồi còn là sinh viên, trong một đồ án môn học nhóm chúng tôi gồm 5 người làm về elearning. Hôm đó, cách 2 ngày nữa là đến ngày bảo vệ đồ án môn học và demo sản phẩm, chúng tôi tụ họp để đưa ra bản chạy cuối cùng, mục đích là vậy nhưng chủ yếu là gặp nhau và tạo một mạng đế chế ở nhà chiến đấu. Dự tính vậy nhưng đến giai đoạn ghép code lỗi bung bét do mỗi ông tham chiếu đến các thư viện của nhau mà các thư viện này đã thay đổi loạn xạ hết cả. Vậy là thay vì hai ngày ngồi chơi chế chờ bảo vệ, chúng tôi phải cùng nhau mày mò debug xem lỗi do ông nào, thời gian như thoi đưa, 2 ngày vù phát hết, mệt mỏi cộng với cảm giác chán nản nhưng trong cái rủi có cái may, một thằng tính cẩn thận đã lưu bản ghép nháp cách đây gần tháng. Thôi tạm, có còn hơn không, chúng tôi cũng bảo vệ xong được môn học với vừa đủ điểm qua. Hic, câu chuyện đó vẫn còn nguyên giá trị đến ngày hôm nay dù đã hơn chục năm ra trường, và sau này khi đi làm lập trình một trong những điều tôi luôn ghi nhớ: phải có hệ thống quản lý phiên bản.

Quản lý phiên bản trong dự án phát triển ứng dụng

Không ít bạn cũng đã từng trải qua những câu chuyện tương tự như của tôi ở trên, giá như ngày ấy biết đến Quản lý phiên bản mã nguồn là gì, chắc chắn những điều đáng tiếc không xảy ra. Giờ đây, tôi ngồi viết lại những gì hơi cổ lỗ sĩ nhưng có thể giúp được các bạn mới bước vào nghề.

Hệ thống quản lý phiên bản (VCS – Version Control System) là hệ thống lưu trữ các thay đổi của các tài nguyên trong một dự án theo thời gian và các thông tin liên quan đến thay đổi như người thay đổi, lý do thay đổi…, các tài nguyên này có thể là tài liệu thiết kế, đặc tả kỹ thuật, file mã nguồn… nó giúp chúng ta kiểm soát những thay đổi trên các tài nguyên và có thể quay trở lại một phiên bản xác định ở một thời điểm. Ok, quay lại câu chuyện của tôi, nếu có hệ thống quản lý phiên bản, chúng tôi đã phối hợp với nhau tốt hơn, chí ít là cũng có một phiên bản gần nhất chạy ổn.

 

Hệ thống quản lý phiên bản có rất nhiều mô hình khác nhau, tùy thuộc vào quy mô dự án cũng như cách thức triển khai, sau đây là một số mô hình chính:

  • Mô hình quản lý phiên bản cục bộ: Cơ quan tôi trước đây sử dụng một máy chủ và chỉ được phép đưa code vào tại đây, mỗi lần viết xong cái gì cầm đĩa mềm sang cắm vào và copy code đúng là thời kỳ đồ đá.
  • Mô hình quản lý phiên bản tập trung: Đến năm 2005 khi xây dựng được phòng máy chủ và cài đặt một số ứng dụng quản lý phiên bản, lúc này chúng tôi đã có thể từ máy tính cá nhân tải code lên máy chủ.
  • Mô hình quản lý phiên bản phân tán: Đến 2006, khi mở chi nhánh đầu tiên tại Sài gòn, một trung tâm CNTT thứ hai của công ty được thành lập, bấy giờ đường truyền backbone trong nước còn chậm dề dề, đành phải sử dụng phương án hai miền hai máy chủ quản lý phiên bản và cho đồng bộ vào tầm đêm khi mà không còn giao dịch nào trên đường trục.

Mô hình hệ thống quản lý phiên bản phân tán

Git là cái quái gì?

Có lẽ đến đây bạn đọc cho rằng tôi có vấn đề khi rõ tiêu đề bài viết “Git là gì” mà cứ đi kế những chuyện ba lăng nhăng về quản lý phiên bản này lọ. Mọi sự có nguồn gốc của nó hết đấy. Tôi lại kể tiếp những câu chuyện lăng quăng của mình. Vào những năm 90 thế kỷ 20, ở Phần Lan xa xôi có một người đàn ông tên Linus Torvalds, cũng đã gặp phải những câu chuyện không khác gì tôi chỉ có điều là nó xảy ra sớm hơn rất nhiều. Người đàn ông ấy chính là người đã sáng lập ra Linux, một hệ điều hành mà giờ có mặt ở khắp nơi. Trong dự án Linux của mình Linus Torvalds đã sử dụng hệ thống quản lý phiên bản độc quyền của công ty BitKeeper. Tuy nhiên, đến năm 2005 sự hợp tác giữa cộng đồng phát triển Linux và BitKeeper đổ vỡ và đây chính là bước ngoặt lớn. Linus Torvalds và cộng đồng phát triển Linux đã tự xây dựng cho mình những công cụ quản lý phiên bản riêng và Git ra đời. Mục tiêu của Git rất rõ ràng khi Linus Torvalds đã có rất nhiều kinh nghiệm trong quản lý phiên bản và làm việc với các dự án cực lớn:

Git là gì?

  • Git phải đơn giản dễ dùng và phải có tốc độ nhanh.
  • Git phải hỗ trợ cho phát triển phi tuyến với hàng ngàn các nhánh công việc song song.
  • Hệ thống Git phải hỗ trợ mô hình phân tán vì các lập trình viên đến từ khắp nơi trên thế giới.
  • Có khả năng xử lý không giới hạn với lượng dữ liệu lớn.
  • Git phải bảo mật

Git với kiến trúc phân tán là một ví dụ điển hình của hệ thống quản lý phiên bản phân tán (DVCS Distributed Version Control System). Git cũng là hệ thống mã nguồn mở do Linus Torvalds (cha đẻ của Git) cũng có thể nói là người luôn hướng đến mã nguồn mở, ngay cả trong Linux chúng ta cũng thấy điều đó. Từ 2005 đến nay, Git đã có những bước tiến không ngừng và được sử dụng lại ở rất nhiều các hệ thống quản lý mã nguồn trực tuyến như GitHub, Bitbucket, Gitlab…

Lời kết

Qua những câu chuyện thực tế, phần nào bạn đã hiểu Git là gì, giờ đây Git đã rất nổi tiếng nhưng khi mới ra đời, nó là cái gì đó rất đơn giản, đơn giản ở chỗ nó phục vụ cho những nhu cầu rất thiết thực. Trong các bài viết tiếp theo chúng ta sẽ đi sâu hơn về hê thống Git như cách cài đặt, sử dụng…

 

Add Comment