Hiện nay khá đông các lập trình viên tại Việt nam vẫn quen sử dụng một số công cụ quản lý mã nguồn như Microsoft Visual Source, SubVersion, CVS hoặc một số sử dụng Team Foundation Server. Các công cụ quản lý mã nguồn này thường mô hình client – server. Server là nơi tổng hợp quản lý tập trung mã nguồn từ các lập trình viên check-in lên. Tuy nhiên một xu hướng khác đang diễn ra phổ biến đó sử dụng GIT để quản lý mã nguồn.

Linux Torvalds
Linux Torvalds

Git là công nghệ quản lý mã nguồn – phiên bản phân tán (distributed revision control and source code management) do Linux Torvalds phát minh ra để quản lý mã nguồn nhân hệ điều hành Linux. Từ đó đến nay, Git được sử dụng rộng rãi trong cộng đồng lập trình viên thế giới, Apple iOS, Android, Java, PHP, Ruby, Python….

Mỗi thư mục Git (Git working directory) là một nơi lưu trữ hoàn chỉnh (full-fleged repository) với đầy đủ lịch sử các phiên bản và khả năng lưu vết các sửa đổi, mà không phụ thuộc vào kết nối mạng hay server trung tâm.
Every Git working directory is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server.

Để bắt đầu hiểu và sử dụng GIT một cách bài bản nhất, các bạn nên trực tiếp tham khảo tài liệu hướng dẫn bằng tiếng Anh tại đây
ProGit của Scot Chacon

Để phục vụ các bạn không quá giỏi tiếng Anh, hoặc muốn học GIT theo cách nhanh nhất, đủ dùng, tôi sẽ tổng hợp lại một số khái niệm, lệnh căn bản, công cụ giao diện để nhanh chóng sử dụng GIT. Nói trước, việc quản lý mã nguồn là việc sống còn, giống như quản lý tiền của thủ quỹ, đừng học ẩu, học vội, hậu quả sẽ rất đau lòng, đôi khí mất trắng mã nguồn của nhiều ngày làm việc đó !

Căn bản về GIT

Các hệ quản lý mã nguồn (SCM) khác sẽ lưu file mã nguồn và thông tin thay đổi (delta change)

Học lập trình trực tuyến

Các SCM khác Git lưu nội dung thay đổi (delta change) so với file mã nguồn ban đầu

Việc lưu delta change này cần phải sử dụng phần mềm làm server để tập trung, đánh chỉ mục các thay đổi thuộc một phiên bản.

GIT trong mỗi phiên bản sẽ lưu những file thay đổi, và liên kết trỏ về những file không thay đổi từ phiên bản trước đó

Học lập trình trực tuyến nâng cao

Mỗi phiên bản lưu luôn file được cập nhật và link liên kết đối với những file không thay đổi. Ví dụ ở Version 2 và 3, file B không thay đổi

Cách quản lý này, khiến GIT hoạt động giống hệ thống quản lý thư mục trong hệ Linux. Khả năng đặt đâu cũng chạy tốt hơn hẳn các SCM khác. Hầu như mọi hoạt động thay đổi file đều diễn ra ngay trên lưu trữ cục bộ (local repository), cho đến khi nào dev muốn thực sự chốt thay đổi (commit) lên remote repository.

Git so sánh sự thay đổi, cũng như đánh chỉ mục file như thuật toán băm SHA-1 tạo ra một chuỗi dài 40 ký tự. Mọi hành động trên GIT luôn là bổ xung thêm dữ liệu, chứ không xóa đi, do đó, khả năng quay lui phục hồi dữ liệu rất cao. Nhưng nhược điểm của GIT là kích thước Git repository sẽ tăng nhanh chóng. Giá ổ cứng ngày càng giảm, do đó bạn không phải quá lo vấn đề này.

Ba trạng thái của file mã nguồn

  1. Committed: file ở thư mục làm việc (working directory) đã đồng nhất với file được lưu trong local repository
  2. Modified: file đang thay đổi
  3. Staged: file thay đổi, được chuẩn bị để chốt hạ (commit) vào local repository lần tới. Nếu commit thành công, thì file lại chuyển về trạng thái Commited.

Học lập trình trực tuyến căn bản

Học lập trình trực tuyến cơ bản

Một hình ảnh nữa mô tả rõ hơn về 3 trạng thái

Học lập trình trực tuyến cấp tốc

Thư mục .git là thư mục ẩn

Học lập trình trực tuyến hiệu quả

git repository khi mở ra chưa nhiều thư mục con

Xem phần 2