Git là gì? Lịch sử phát triển Git?

, ,

Git là gì?

Git là một hệ thống kiểm soát phiên bản phân tán, để theo dõi bất kỳ thay đổi trong file (hoặc nhiều files) trên máy tính. Git thường được sử dụng để điều phối công việc giữa các lập trình viên [1] đang cộng tác phát triển mã nguồn trong quá trình phát triển phần mềm.

Mục tiêu của git bao gồm:

  • Tốc độ
  • Tính toàn vẹn dữ liệu
  • Hỗ trợ các quy trình công việc phân tán, phi tuyến tính
    (hàng nghìn nhánh song song chạy trên các máy tính khác nhau)

Git ban đầu được Linus Torvalds tạo ra vào năm 2005 để phát triển nhân Linux, cùng với các nhà phát triển khác đóng góp vào sự phát triển ban đầu của nó. Từ năm 2005, Junio Hamano là người bảo trì chính. Giống như hầu hết các hệ thống kiểm soát phiên bản phân tán khác và không giống như hầu hết các hệ thống máy khách-máy chủ, mọi thư mục Git trên mọi máy tính đều là một kho lưu trữ chính thức với lịch sử hoàn chỉnh và khả năng theo dõi phiên bản đầy đủ, độc lập với truy cập mạng hoặc máy chủ trung tâm. Git là phần mềm mã nguồn mở và miễn phí được chia sẻ theo giấy phép GPL-2.0.

Kể từ khi được tạo ra, Git đã trở thành hệ thống kiểm soát phiên bản phân tán phổ biến nhất, với gần 95% nhà phát triển báo cáo, đây là hệ thống kiểm soát phiên bản chính của họ tính đến năm 2022. Có nhiều dịch vụ phổ biến về dịch vụ kho lưu trữ Git, bao gồm GitHub, SourceForge, Bitbucket và GitLab.

Lịch sử phát triển

Quá trình phát triển Git được Torvalds bắt đầu vào tháng 4 năm 2005. Khi đó, hệ thống quản lý kiểm soát nguồn (SCM) độc quyền được sử dụng để phát triển nhân Linux từ năm 2002, là BitKeeper, đã bị thu hồi giấy phép miễn phí để phát triển Linux. Người giữ bản quyền của BitKeeper, Larry McVoy, tuyên bố rằng Andrew Tridgell đã tạo SourcePuller bằng cách đảo ngược kỹ thuật các giao thức BitKeeper. Sự việc tương tự cũng thúc đẩy việc tạo ra một hệ thống kiểm soát phiên bản khác nữa, là Mercurial.

Torvalds muốn có một hệ thống phân tán mà anh có thể sử dụng như BitKeeper, nhưng không có hệ thống miễn phí nào đáp ứng được nhu cầu của anh. Anh trích dẫn một ví dụ về hệ thống quản lý kiểm soát nguồn cần 30 giây để áp dụng bản vá và cập nhật tất cả siêu dữ liệu liên quan, đồng thời lưu ý rằng điều này sẽ không mở rộng theo nhu cầu phát triển nhân Linux, nơi việc đồng bộ hóa với các nhà bảo trì đồng nghiệp có thể yêu cầu 250 hành động như vậy tại một thời điểm, vào mỗi lần. Đối với tiêu chí thiết kế của mình, anh ấy chỉ định rằng việc vá lỗi sẽ không quá ba giây và bổ sung thêm ba mục tiêu:

  1. Lấy Hệ thống phiên bản đồng thời (CVS) làm ví dụ về những điều không nên làm; nếu nghi ngờ, hãy đưa ra quyết định hoàn toàn ngược lại.

  2. Hỗ trợ quy trình làm việc phân tán, giống như BitKeeper.

  3. Bao gồm các biện pháp bảo vệ rất mạnh mẽ tránh khỏi sự hư hỏng, do vô tình hoặc cố ý.

Các tiêu chí này đã vượt trên mọi hệ thống kiểm soát phiên bản đang được sử dụng vào thời điểm đó, vì vậy ngay sau khi phát hành nhân Linux 2.6.12-rc2, Torvalds đã bắt tay vào viết hệ thống của riêng mình.

Sự phát triển của Git bắt đầu vào ngày 3 tháng 4 năm 2005. Torvalds công bố dự án vào ngày 6 tháng 4 và tự tổ chức vào ngày hôm sau. Việc sáp nhập nhiều nhánh phát triển [2] đầu tiên diễn ra vào ngày 18 tháng 4. Torvalds đã đạt được mục tiêu về hiệu suất của mình.

  • Vào ngày 29 tháng 4, Git mới ra đời đã được đánh giá điểm chuẩn ghi các bản vá vào cây nhân Linux với tốc độ 6,7 bản vá mỗi giây.

  • Vào ngày 16 tháng 6, Git quản lý việc phát hành kernel 2.6.12.

Torvalds chuyển giao việc bảo trì vào ngày 26 tháng 7 năm 2005 cho Junio Hamano, người đóng góp chính cho dự án. Hamano chịu trách nhiệm phát hành phiên bản 1.0 vào ngày 21 tháng 12 năm 2005.

Đặt tên

Torvalds châm biếm một cách mỉa mai về cái tên git (có nghĩa là “người khó chịu” trong tiếng lóng tiếng Anh Anh): “Tôi là một tên khốn tự cao tự đại, và tôi đặt tên tất cả các dự án của mình theo tên mình. Đầu tiên là ‘Linux’, bây giờ là ‘git’.”

The man page describes Git as “the stupid content tracker”.

Tệp read-me của mã nguồn giải thích thêm:
“git” có thể có nghĩa là bất cứ điều gì, tùy thuộc vào tâm trạng của bạn.

  • Sự kết hợp ba chữ cái ngẫu nhiên có thể phát âm được và không thực sự được sử dụng bởi bất kỳ lệnh UNIX thông thường nào. Việc nó phát âm sai từ “get” có thể có liên quan hoặc không.

Stupid. Contemptible and despicable. Simple. Take your pick from the dictionary of slang.

  • Global information tracker” [3]: bạn đang có tâm trạng tốt và git thực sự có tác dụng với bạn. Các thiên thần hát vang, và ánh sáng đột nhiên tràn ngập căn phòng.

  • Goddamn idiotic truckload of sh*t” [4]: khi git bị hỏng.
    Mã nguồn của Git gọi chương trình này là “trình quản lý thông tin như địa ngục”.


  1. Ngày nay, do thể hiện tính hiệu quả cao, git được dùng nhiều hơn cho nhiều loại công việc khác, không còn giới hạn trong việc lập trình ↩︎

  2. Trong kỹ thuật của git, gọi đây là hành động merge branches ↩︎

  3. Dịch là: “Trình theo dõi thông tin toàn cầu” ↩︎

  4. Dịch là: Cái xe tải ngu ngốc chết tiệt ↩︎