Giai đoạn 6 - Quản lý phiên bản
Phù, chào mừng mọi người đến với chuyến hành trình mới của 90 ngày cùng DevOps, nơi mà ở đó chúng ta sẽ khám phá công cụ quản lý phiên bản mã nguồn được tin dùng số 1 trên thế giới - Git. Đây là chặng thứ sáu và bây giờ, hãy xuất phát thôi! 🚗
Nguồn: QuoteFancy
Ngày 32 - Quản lý phiên bản, một bức tranh toàn cảnh
Quản lý phiên bản là gì?
Hãy tưởng tượng, bạn đang ở trong một nhóm phát triển phần mềm. Mã nguồn của phần mềm được nâng cấp và cập nhật gần như liên tục. Câu hỏi đặt ra là làm cách nào để những cập nhật này được công khai đến tất cả thành viên trong nhóm phát triển?
Bình thường có thể bạn sẽ làm như thế này.
- Nén toàn bộ mã nguồn thành tập tin (.zip)
- Gửi qua hệ thống tin nhắn tập tin này đến nhóm trò chuyện
- Từng thành viên giải nén tập tin và theo dõi sự thay đổi
Có thể nói đây là cách cồng kềnh nhất được sử dụng để thực hiện việc cập nhật mã nguồn. Git được sinh ra chính là để giải quyết sự cồng kềnh và tiêu hao nguồn lực này.
Hãy nhìn cái cách mà Git cho chúng ta biết chiếc kho lưu trữ được sử dụng cho 90 ngày cùng DevOps đã có những thay đổi gì.
Chính nhờ Git mà những thứ đại loại như phân quyền người dùng được thực hiện một cách dễ dàng và tiện lợi hơn. Lấy ví dụ như một ứng dụng freemium (dạng như FPT Play hay YouTube chẳng hạn), có những tính năng bổ sung mà chỉ người dùng trả phí mới được sử dụng. Ta sẽ phân nhánh nhóm tính năng này riêng biệt với nhóm tính năng miễn phí.
Một điều đáng lưu tâm là các tính năng miễn phí tất nhiên người dùng trả phí sẽ cũng được sử dụng như bình thường. Điều này gây phát sinh ra một việc có tên gọi Nhập nhánh (Merge).
Nhập nhánh tất nhiên sẽ không giải quyết những sai lệch giữa các phiên bản mã nguồn khác nhau do chính chúng ta tạo nên, tuy nhiên sự xuất hiện của các công cụ quản lý phiên bản giúp chúng ta thấy rõ những sai lệch (nếu có) này và tinh chỉnh cho phù hợp với một thuật ngữ mang tên: Luồng sự thật duy nhất.
Thực hành với Git
Chúng ta bắt đầu bằng những câu lệnh đơn giản như sau.
Đó là tất cả những gì cơ bản nhất về Quản lý phiên bản, và chúng ta sẽ còn được thực hành nhiều hơn ở ngày tiếp theo. Ngày 32 của hành trình kết thúc tại đây. ✅
Ngày 33 - Cài đặt và sử dụng Git
Xin chào mọi người, đây là ngày thứ 33 của hành trình 90 ngày cùng DevOps, và đây là lúc mà chúng ta sẽ cài đặt phiên bản mới nhất của Git, để cùng sẵn sàng thực hiện một dự án hoàn toàn mới. Nào, hãy chuẩn bị sẵn một chiếc máy tính, và bắt đầu hành trình thôi! 🚎
Tải xuống bộ cài Git
Tại website này, chúng ta có thể tải xuống phiên bản mới nhất của Git để sử dụng trên máy Windows, với máy Mac dùng đường dẫn này. Kiểm tra phiên bản của Git bằng lệnh sau.
Sau khi tải bộ cài về máy, chỉ cần chạy nó lên, chọn các tính năng cần cài đặt và sau đó xác nhận sau khi chờ hoàn thành.
Đối với Linux, cài đặt bằng các lệnh sau.
Cấu hình Git
Kiểm tra và thực hiện cấu hình lần đầu bằng lệnh sau.
Có ba cấp độ cấu hình, tương ứng với ba phạm vi cấu hình cho Git.
- Cấp độ hệ thống phục vụ tất cả người dùng.
- Cấp độ toàn cục phục vụ tất cả kho lưu trữ của người dùng
hiện thời (
--global
). - Cấp độ cục bộ phục vụ chỉ một kho lưu trữ (
--local
).
Thư mục chứa tập tin cấu hình thường là thư mục của người dùng, và tập tin
sẽ có tên là .gitconfig
. Dưới đây thường là cây thư mục của máy Windows.
Thư mụcC:
- …
Thư mụcUsers
- …
Thư mụcanthony2708
- …
- .gitconfig
Một số kiến thức về Git
Có hai dạng quản lý mã nguồn là Quản lý Chủ - Khách và Quản lý phân tán, trong đó quản lý phân tán là cách mà Git đang sử dụng với những lợi ích như sau.
- Nhanh chóng
- Linh hoạt
- An toàn & Bảo mật
- Tính thông minh
Với Git, chỉ có một bộ mã nguồn tập trung nơi tất cả người dùng đều tải xuống phiên bản đã lưu. Việc cập nhật mã nguồn tuân theo nguyên tắc giải quyết xung đột theo mô hình chủ - khách nhưng tối giản các bước cần thiết mà không làm ảnh hưởng đến toàn bộ mã nguồn đã có sẵn trên hệ thống.
Đó là tất cả những gì cơ bản nhất về Git trong ngày thứ 33 này. ✅
Ngày 34 - Git101 - Những câu lệnh cần lưu tâm
Xin chào tất cả mọi người. Rất xin lỗi vì để cho chiếc series này kéo dài quá lâu đến không kịp hoàn thành đúng tiến độ. Thực ra gần đây mình cũng nhận được một công việc mới, ở một nơi làm mới, khá bận bịu với rất nhiều yêu cầu khác nhau, do đó cũng không thể về đích đúng hẹn được.
Do vậy, thông qua dịp này, mình cũng sẽ thực hiện một chiến lược mới - rút gọn các nội dung không phù hợp và sáp nhập lại các ngày trong series. Hy vọng mọi người sẽ tiếp tục ủng hộ và theo dõi trong năm 2025.
Trong ngày hôm nay, nội dung của ba ngày kế tiếp sẽ được nhập lại để đưa vào chung trong một bài viết - hãy sẵn sàng để trở lại hành trình thôi nào! 🚗
Giải ngố lệnh Git
Nếu bạn không biết cách sử dụng các câu lệnh của Git, bạn có hai giải pháp sau đây.
-
Truy cập vào website chính thức để đọc hướng dẫn: Đường dẫn này cung cấp cho mọi người tất cả những gì mà mọi người cần.
-
Gõ lệnh sau đối với các câu lệnh cần tìm hướng dẫn.
Những ngộ nhận và thiếu sót “chết người” về Git
Có những ngộ nhận và thiếu sót rất khó chấp nhận với Git mà chúng ta đôi khi gặp phải.
- Dùng Git nghĩa là không có quyền kiểm soát truy cập: Sai - bạn có thể trao quyền cho một trưởng bộ phận để duy trì mã nguồn.
- Git quá nặng: Sai - Git có thể cung cấp các kho lưu trữ nông (shallow repositories), có nghĩa là lịch sử sẽ được cắt giảm tối đa nếu có một dự án lớn.
- Không thích hợp cho các loại tập tin khác ngoài mã nguồn: Đúng - video và mấy tập tin thực thi cỡ lớn không phải là thứ mà Git yêu thích, dù Git có cả Git LFS.
- Không thân thiện: Đúng - Git thực sự có quá nhiều câu lệnh, để thấu hiểu hết cách dùng sẽ mất rất nhiều thời gian. Đường cong học tập lớn, dẫn đến không ít người e ngại khi học Git.
Hệ sinh thái và “Bí kíp võ công” Git
Hầu như tất cả công cụ phát triển mã nguồn hiện đại đều có Git.
- Môi trường phát triển tích hợp: Mình đang viết mã nguồn trên Visual Studio Code - một ứng dụng có tích hợp với Git.
- Điện toán đám mây: AWS, GCP (Google) hay Microsoft Azure tất nhiên đều có các dịch vụ về Git.
- “Mạng xã hội” Git: Mã nguồn của trang mạng này được đăng tải trên GitHub. Bên cạnh đó, còn có GitLab hay Bitbucket (nơi mình tải lên kho lưu trữ mã nguồn của Khóa luận tốt nghiệp) cũng là những nơi có sử dụng Git.
Để làm việc với những công cụ này, tất thảy cần có “bí kíp”, và trang web này chính là một trong số đó. Ở đây có rất nhiều câu lệnh khác nhau, tuy nhiên chúng ta sẽ chỉ chú ý đến một số câu lệnh sau.
Về mặt lời khuyên khi commit xác nhận - lưu ý các yêu cầu sau đây.
- Commit liên tục để không làm gián đoạn quy trình. Không ai muốn commit phút cuối để rồi đi gỡ lỗi sấp mặt cả!!!
- Commit cần có nội dung rõ ràng - Không nên ghi chung chung như “upload file” mà cần chỉ rõ là “upload file” nào, ở đâu, ai tải lên và ngày nào.
- Commit cần tách biệt giữa những thay đổi khác nhau - Không gộp chung commit của hai hay nhiều sự kiện không liên quan nhau.
Rebase và Merge
Sự khác nhau của hai câu lệnh này cụ thể liên quan đến cách ghi nhật trình commit.
git merge
: Lệnh này cho phép nhập một nhánh bất kỳ vào một nhánh khác - tuy nhiên việc nhập nhánh này đồng nghĩa với việc sẽ xuất hiện một bản ghi không liên quan của nhánh được nhập vào, gây ra rất nhiều phiền toái trong quản lý về mặt nội dung commit.git rebase
: Lệnh này sẽ cho phép tạo một commit riêng biệt nhưng trên nhánh được nhập vào, không có chỗ cho một bản ghi nhập nhánh. Điều này sẽ giúp nhật trình được sạch và dễ quản lý hơn.
Sự đánh đổi ở đây rõ ràng là có - nếu không tuân thủ Quy tắc vàng, rất có thể việc “viết lại lịch sử” sẽ là thảm họa - chúng ta sẽ không cung cấp đủ thông tin cho việc nhập nhánh và khiến việc theo dõi gặp khó khăn.
Do đó, lựa chọn là của chính bạn - và duy nhất chỉ có một lựa chọn được xem là tốt nhất, đó là tiếp tục theo dõi hành trình này ở ngày tiếp theo. Ngày 34 xin được kết thúc ở đây - trân trọng cảm ơn mọi người đã tham gia cùng mình. ✅
Ngày 35 - GitHub - Mạng xã hội dành cho mã nguồn
Xin chào, đây là ngày thứ 35 - cũng sẽ là ngày cuối cùng của giai đoạn này. Ngày hôm nay, chúng ta sẽ đi vào tìm hiểu về các nền tảng như GitHub, GitLab hay Bitbucket - các nền tảng lưu trữ mã nguồn trên điện toán đám mây phổ quát nhất được sử dụng hiện nay.
Những nội dung cơ bản nhất của GitHub sẽ được cập nhật, mang đến những cái nhìn tổng quan và giúp mọi người có thể sử dụng một cách hiệu quả nhất. Nào, cùng xách ba lô lên và đi thôi! 🎒
GitHub
GitHub ra mắt vào những năm 2007 - 2008 (cũng đã gần 17 năm). Hiện nay, Microsoft chính là những người đứng sau GitHub, mang đến cho nó những tính năng cộng tác với Git tốt nhất như sau.
- Kho lưu trữ mã nguồn
- Yêu cầu kéo mã nguồn (Pull Requests) - nhập nhánh các thay đổi liên quan
- Công cụ quản lý dự án - Issues
- CI/CD với GitHub Actions
GitHub là một ứng dụng Freemium - tức là miễn phí có giới hạn tính năng. Đối với các doanh nghiệp có ý định dùng GitHub trong công việc, có thể tham khảo bảng giá tại đây.
Khám phá giao diện GitHub
Khi tạo xong tài khoản và truy cập vào trang web chính thức, mọi người sẽ được chào đón bởi một giao diện như thế này.
Giao diện chính
- Top repositories: Những kho lưu trữ mà mọi người hay làm việc.
- Your teams: Các nhóm trên GitHub. GitHub cho phép gom các kho về cùng quản lý dưới một tài khoản nhóm. Phía trên sẽ thường có mục Recent Activity - Hoạt động gần đây, với các yêu cầu kéo mã nguồn/nhập nhánh.
- Home: Trang nhà - như một bảng tin (feed) trên Facebook/Meta, cung cấp những hoạt động của những người mà bạn theo dõi.
- Latest changes: Thay đổi mới nhất liên quan đến GitHub.
- Explore repositories: Khám phá các kho lưu trữ được người dùng khắp thế giới quan tâm.
Trang cá nhân
Mọi người có thể đi vào trang cá nhân ngay tại mục Your Profiles, khi chọn vào hình đại diện của mình.
- Overview - Tổng quan: Cung cấp những thông tin cơ bản về người dùng
- Repositories - Kho lưu trữ: Chứa tất cả những kho lưu trữ (công khai và riêng tư) trên GitHub
- Packages - Gói: Đây thực ra là một tính năng rất hay liên quan đến bộ chứa (Containers) mà chúng ta sẽ đề cập ở giai đoạn tiếp theo của hành trình.
Kho lưu trữ
Khi bước vào kho lưu trữ bất kỳ, mọi người sẽ bắt gặp một giao diện như thế này.
- Pull Requests - Yêu cầu kéo: Đây chính là nơi nhập nhánh các thay đổi mã nguồn trên kho.
- Actions - Theo dõi luồng: Nơi các đường CI/CD được triển khai và giám sát quá trình.
- Wiki - Hướng dẫn: Nơi chứa tất cả “bí kíp võ công” của kho, giúp việc sử dụng trở nên đơn giản hơn.
- Security - Bảo mật: Cung cấp các tùy chọn về bảo mật, các cảnh báo cũng như đề xuất giải pháp vá lỗi nhằm ngăn chặn nguy cơ bị khai thác các lỗ hổng trên thực tế.
- Insights - Thăm dò: Theo dõi các hoạt động trên kho, như một nhật trình giám sát tất cả mọi thứ.
- Settings - Cài đặt: Nơi thiết lập các chế độ cho kho lưu trữ, bao gồm việc ẩn đi một vài thẻ như Projects - Dự án (có vai trò như một bảng Kanban theo dõi các đầu việc nhất định) và cả Sponsor - Tài trợ cho dự án…
Tham gia cuộc chơi “mã nguồn mở”…
Nếu giả sử bạn thấy có một kho lưu trữ rất hay, có thể mọi người lựa chọn một trong ba giải pháp sau.
- Watch - Theo dõi 👁: Tương tự tính năng Đang theo dõi trên Facebook, thông tin của kho sẽ được hiện lên trên Trang nhà.
- Fork - Sao chép 🍴: Đây là cách chúng ta sao chép nguyên bản một kho lưu trữ về trang cá nhân và làm việc với những thay đổi trên bản sao này, trước khi nghĩ đến việc gửi lại bản sao với những cải thiện cho bên giữ bản gốc. Fork trong tiếng Anh có nghĩa là chiếc nĩa - hãy nhìn hình dạng của nĩa, bạn sẽ có sự tưởng tượng rõ nét hơn về tính năng này.
- Star - Yêu thích ⭐: Tương tự tính năng Yêu thích trên Facebook, việc này sẽ giúp đưa kho vào một danh sách yêu thích để theo dõi riêng biệt.
Nếu giả sử mọi người muốn sao chép, hãy chọn Fork. Và đây là những gì mọi người sẽ nhìn thấy (trừ dòng màu vàng do kho đang chuyển sang chế độ lưu trữ).
Tại đây mọi người bắt đầu bấm vào nút Code màu xanh lá - Ở chế độ Clone (Nhân bản) sẽ có một đường dẫn. Mở cửa sổ dòng lệnh lên và gõ.
Sau khi thực hiện thay đổi, chạy lần lượt ba câu lệnh sau trên cửa sổ dòng lệnh của Visual Studio Code.
Trên màn hình sẽ có hai nút có thể sử dụng với hai chiều ngược nhau.
- Contribute - Chiều đi: Sau khi cập nhật xong, nút này sẽ giúp tạo một yêu cầu nhập nhánh. Yêu cầu nhập nhánh này sẽ nhập về bản gốc - sau khi được duyệt thì yêu cầu này sẽ được cập nhật trên cả bản gốc lẫn bản sao. Điều này nghĩa là bạn đã tham gia cuộc chơi thành công!
- Sync fork - Chiều về: Nút này có tác dụng cập nhật từ bản gốc những thay đổi đang có, về lại bản sao của mình.
Giao diện tạo yêu cầu nhập nhánh sẽ trông như thế này. Hãy nhập những thông tin bình thường nhất, và lưu lại. Người giữ bản gốc sẽ xem xét bản sao này.
Đó là tất cả những gì bạn có thể làm, để GitHub thực sự trở thành một người bạn đồng hành lý tưởng. Hành trình của giai đoạn 6 sẽ kết thúc tại đây. ✅
Tài liệu tham khảo 📚
Mời mọi người chuyển sang trang này để theo dõi tất cả tài liệu liên quan trong giai đoạn 6, để giúp bản thân có được những tài liệu hữu ích về Quản lý phiên bản trong làm việc với DevOps.
Giai đoạn 6 - Tham khảoHẹn gặp mọi người ở những ngày tiếp theo, nơi chúng ta sẽ khám phá những câu chuyện thú vị về bộ chứa (Containers) và ảo hóa trong xây dựng dự án. 🚀