Git – Một công cụ không thể thiếu

Git

Dù bạn đang còn đi học, hay đã là một lập trình viên thì git vẫn là một công cụ tuyệt vời, không thể tách rời với chúng ta. Mình bắt đầu vào đại học năm 2011, vào thời điểm này git vẫn chưa phổ biến như hiện nay. Tuy nhiên, vẫn có những công cụ khác tương tự (nhưng không tốt bằng git) hỗ trợ lập trình viên, ví dụ như TortoiseSVN. Đến năm 2015, mình bắt đầu đi làm thì git và github đã trở nên rất phổ biến. Do đó, mình cũng không biết để kể cho các bạn nghe về cái thời mà lập trình viên không có những công cụ tương tự git hỗ trợ.

Tổng quan về Git

Git là phần mềm quản lý mã nguồn phân tán (Distributed Version Control System – DVCS) được phát triển bởi Linus Torvalds vào năm 2005, ban đầu dành cho việc phát triển nhân Linux. Trong DVCS, mã nguồn sẽ được lưu ở máy chủ dịch vụ, mỗi lập trình viên khi làm việc sẽ clone về 1 phiên bản trên máy tính của họ. Sau khi hoàn thiện mã nguồn chức năng trên máy của mình, lập trình viên (tùy thuộc vào role và permissions) sẽ có thể đóng góp mã nguồn của mình vào phiên bản đang được lưu trữ tại máy chủ.

Một số khái niệm trong Git

Trước khi bắt đầu làm việc với Git, chúng ta hãy cùng dạo qua một số khái niệm quan trọng.

Repository

Repository là nơi lưu trữ tất tần tật mọi thứ trong dự án của chúng ta. Từ các files mã nguồn, cấu trúc thư mục, lịch sử thay đổi…vv

Clone

Clone là một thao tác tạo bản sao của 1 repository. Có thể hiểu đơn giản, repository được lưu trữ ở máy chủ Git, khi tiến hành clone, chúng ta sẽ sao chép tất cả data (từ các file mã nguồn, đến các meta data như log, commit messages…vv) về máy của chúng ta. Thư mục dự án được clone về gọi là local repository để phân biện với repository lưu tại máy chủ gọi là remote repository.

Pull và Push

Pull và push là 2 thao tác đơn giản giúp chúng ta đồng bộ local repository và remote repository.

Branch

Branch (nhánh) có thể hiểu là 1 phiên bản của dự án. Bạn có thể hình dung, trong 1 dự án game, có 1 nhóm nhân viên được giao phát triển một tính năng mới. Tính năng này độc lập với các tính năng khác đang có trong game. Khi đó, trưởng nhóm sẽ tách dự án ra thành 1 nhánh riêng biệt, phát triển trên nhánh này mà không sợ ảnh hưởng đến mã nguồn của dự án. Sau khi phát triển xong, nếu tính năng mới đúng yêu cầu và vượt qua các bài kiểm thử. Nó sẽ được “merge” (gộp) vào nhánh chính của dự án.

GitHub là gì?

GitHub là một dịch vụ cung cấp kho lưu trữ mã nguồn Git dựa trên nền web cho các dự án phát triển phần mềm. Có thể hiểu một cách đơn giản, GitHub cung cấp dịch vụ Git và nó có giao diện Web. Ngoài ra, GitHub còn có một số tính năng khác, biến nó trở thành một mạng xã hội cho cộng đồng lập trình viên.

Các tổ chức, cá nhân có thể tạo những dự án mã mã nguồn mở (public repo) chia sẻ nó với cộng động. Bạn là một lập trình viên, có thể clone một repo về để sử dụng, hay bạn có thể theo dõi (watch) hoặc đóng góp (trở thành contributor) vào một dự án nào đó…vv Nếu bạn yêu thích 1 repo nào đó, có thể tặng sao (giống like của Facebook). Và rõ ràng, các dự án vài nghìn, hay vài chục nghìn sao chắc chắn rất hữu ích.

Vào những lúc rảnh, mình cũng thường truy cập Gitstar Ranking để kiếm các repo hay ho để vọc thử.

GitLab, Bitbucket

Ngoài GitHub, chúng ta còn có các lựa chọn khác như GitLab hay Bitbucket. Mỗi 1 nền tảng đều có những ưu nhược điểm khác nhau, rất khó để so sánh một cách cụ thể. Nếu có thời gian, các bạn hãy trải nghiệm tất cả để tìm cho mình một công cụ phù hợp nhất với sở thích và nhu cầu công việc nhé.