Hệ thống quản lý mã nguồn Git – phần 1: các khái niệm và lưu ý

Giới thiệu

Trong lĩnh vực phát triển phần mềm, hệ thống quản lí mã nguồn (version control system) là vô cùng quan trọng bới các lý do:

  • Mã nguồn (code) là sản phẩm duy nhất và quan trọng nhất từ công sức của các kỹ sư phần mềm nên nó cần được quản lý chặt chẽ sự thay đổi, lưu trữ (backup) các phiên bản của phần mềm.
  • Trong hầu hết các trường hợp, phát triển phần mềm cần có sự tham gia của một nhómlập trình viên làm việc tại các máy độc lập nên cơ chế làm việc chung trên cùng một mã nguồn là cực kì quan trọng.

Git là một hệ thống quản lý mã nguồn đáp ứng các yêu cầu trên với sự tập trung cho tốc độ, tính toàn vẹn dữ liệu và hỗ trợ các quy trình làm việc phi tuyến tính. Có một điều khá thú vị là người thiết kế và phát triển Git cũng chính là cha đẻ của hệ điều hành Linux, ông Linus Torvalds vào năm 2005. Phát minh mã nguồn mở này nhanh chóng được sử dụng rộng rãi và dần trở thành công cụ không thể thiếu với mọi lập trình viên.

Tài liệu chính thức

Git cung cấp rất nhiều câu lệnh hỗ trợ tại trang web chính thức, mọi người cùng tìm hiểu tại đây.

Giải thích sơ lược về cơ chế hoạt động

Cơ chế đa nhánh:

  • Một mã nguồn có thể có nhiều nhánh (branch) trên các máy địa phương (local machine) và trên máy chủ Git (git server).
  • Tại local machine, chúng ta có thể dễ dàng chuyển mã nguồn hiện tại theo tình trạng của các nhánh bằng câu lệnh checkout.

Cơ chế lưu trữ phân tán:

  • Thông thường 1 người sử dụng Git tại local machine sẽ có 3 vùng nhớ cần lưu ý để làm việc. Một là vùng nhớ trên git server, hai là vùng nhớ local lấy từ server xuống (origin/branch_name), ba là vùng nhớ cho những thay đổi vừa tạo ra tại máy.

Mục đích: chúng ta có thể kiểm tra sự thay đổi từ server dựa vào câu lệnh git fetch (update vùng nhớ thứ 2 từ vùng nhớ thứ 1). Khi không có mạng, chúng ta vẫn có thể hoạt đông bình thường, tạo các commit hay trộn code với những branch đã fetch xuống từ trước. Đây là một ưu điểm lớn của Git khiến cho việc sử dụng không quá phụ thuộc vào kết nối mạng trong khoảng thời gian ngắn.

Một số mẹo, kinh nghiệm sử dụng Git:

  • Branch của mình bị xung đột (conflict) với brach master and production: Rebase and Merge. Merge đơn giản hơn nhưng cây commit (source tree) sẽ không được đẹp và dễ theo dõi như dùng rebase.
  • Branch không phải do mình làm và quản lí nhưng bị conflict khi pull code mới nhất về:

Ý nghĩa: người đang sử dụng branch có thể revert và commit lại một hoặc nhiều commit trước đây nên có khả gây xung đột khi ta pull về nhiều lần. HEAD~5 có nghĩa là trả code về tình trạng cách đây 5 commits để đảm bảo những commit trước khi bị thay đổi không còn tồn tại ở local từ đó không  gây conflict khi cập nhật từ server (con số 5 chỉ là con số gợi ý, bạn có thể tăng lên nếu vẫn còn conflict hoặc giảm đi nếu thấy cần thiết).

  • Muốn lấy một số commit của một branch local bất kì: cherry-pick.
  • Xem nhanh các commit theo từng dòng: git commit --oneline.
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s