Git & GitHub từ cơ bản đến nâng cao
Khóa học "Git & GitHub từ cơ bản đến nâng cao" mang đến lộ trình đào tạo toàn diện từ nền tảng quản lý phiên bản cá nhân đến các kỹ thuật tự động hóa chuyên sâu trong doanh nghiệp. Học viên sẽ làm chủ toàn bộ quy trình làm việc với Git, bao gồm quản lý lịch sử commit, phân nhánh, hợp nhất mã nguồn và xử lý các xung đột thực tế. Chương trình hướng dẫn chi tiết quy trình cộng tác nhóm chuẩn mực trên GitHub qua Pull Request, Code Review và các mô hình phát triển dự án mã nguồn mở. Đặc biệt, người học sẽ nâng cao năng lực qua việc tự động hóa quy trình CI/CD với GitHub Actions, tùy biến Git Hooks và thiết lập các chính sách bảo mật kho chứa chuẩn mực.
Mục tiêu học tập:
Hiểu rõ bản chất quản lý phiên bản, thành thạo các thao tác cơ bản về vòng đời tệp tin, lưu vết commit và khôi phục trạng thái mã nguồn cá nhân.
Làm chủ kỹ năng làm việc với nhánh mã nguồn, xử lý thành thạo xung đột hợp nhất và tương tác trơn tru với các kho chứa từ xa.
Áp dụng chuẩn xác quy trình làm việc nhóm GitHub Flow, thực hiện Code Review chuyên nghiệp và tham gia đóng góp hiệu quả vào các dự án mã nguồn mở.
Triển khai các kỹ thuật Git nâng cao, xây dựng hệ thống tự động hóa CI/CD với GitHub Actions và cấu hình quản trị bảo mật cho kho chứa cấp doanh nghiệp.
Nội dung khóa học
Cơ bản về mã nguồn và quản lý phiên bản cá nhân
3 bài học · 22 hoạt động-
Khái niệm hệ thống kiểm soát phiên bản (VCS) và so sánh giữa VCS tập trung (CVCS) với VCS phân tán (DVCS)
-
Kiến trúc 3 khu vực cốt lõi của Git: Working Directory, Staging Area (Index) và Repository (HEAD)
-
Hướng dẫn các bước nộp bài thực hành
-
Thực hành: Cài đặt Git trên Linux/Windows và cấu hình danh tính toàn cục (git config --global)
-
Thực hành: Khởi tạo kho chứa cục bộ (git init) và liên kết/sao chép kho chứa (git clone)
-
Quiz: Trắc nghiệm phân biệt các trạng thái tệp tin trong Git (Untracked, Staged, Committed)
-
Thảo luận: Tổng quan về Version Control & Thiết lập môi trường Git
-
Cơ chế Snapshot lưu trữ dữ liệu của Git và cách kiểm tra trạng thái thay đổi (git status, git diff)
-
Quy chuẩn viết thông điệp Commit chuẩn mực và cấu trúc mã băm SHA-1
-
Thực hành: Đưa thay đổi vào Staging Area và tạo điểm lưu trữ phiên bản (git add, git commit)
-
Thực hành: Kiểm tra và lọc nhật ký lịch sử mã nguồn (git log --oneline --graph, git show)
-
Thực hành: Loại bỏ các tệp tin rác và dữ liệu nhạy cảm khỏi Git bằng tệp .gitignore
-
Quiz: Trắc nghiệm kiểm tra sự hiểu biết về sự khác biệt giữa Staging Area và Working Directory
-
Thảo luận: Vòng đời tệp tin & Quản lý lịch sử Commit cục bộ
-
Phân biệt cơ chế khôi phục tệp tin và dọn dẹp thư mục rác không quản lý (git clean -n/-f)
-
So sánh chuyên sâu các chế độ hủy bỏ thay đổi (git reset --soft, --mixed, --hard) và git checkout
-
Thực hành: Bỏ tệp khỏi Staging Area và chỉnh sửa thông điệp commit gần nhất (git commit --amend)
-
Thực hành: Khôi phục các commit bị mất hoặc thao tác nhầm bằng nhật ký con trỏ git reflog
-
Thực hành: Xây dựng kịch bản hoãn thay đổi, sửa commit hỏng và cứu mã nguồn bị xóa nhầm trên máy cục bộ
-
Quiz: Trắc nghiệm xử lý tình huống khôi phục mã nguồn an toàn khi gặp sự cố
-
Thảo luận: Thao tác hủy bỏ & Khôi phục trạng thái mã nguồn
-
Case Study: Thiết lập quy trình quản lý phiên bản cá nhân và làm chủ vòng đời mã nguồn cục bộ
Nhánh mã nguồn, Hợp nhất và tương tác kho chứa từ xa (Branching & Remotes)
3 bài học · 21 hoạt động-
Bản chất con trỏ nhánh trong Git và luồng phát triển tính năng độc lập
-
Cơ chế hợp nhất nhánh: Phân biệt Fast-forward Merge và Three-way Merge (Merge commit)
-
Thực hành: Tạo, chuyển đổi và xóa nhánh cục bộ (git branch, git checkout -b, git switch)
-
Thực hành: Hợp nhất nhánh tính năng vào nhánh chính (git merge) và dọn dẹp con trỏ nhánh
-
Quiz: Trắc nghiệm phân biệt cây lịch sử phát sinh khi thực hiện Fast-forward vs Merge Commit
-
Thảo luận: Quản lý nhánh (Git Branching) & Chiến lược Hợp nhất (Merging)
-
Nguyên nhân gây ra xung đột và cấu trúc các ký hiệu dấu xung đột (<<<<<<<, =======, >>>>>>>)
-
Tương tác kho chứa từ xa (Remote Repositories: Origin, Fetch, Push, Pull)
-
Thực hành: Cấu hình Remote, đẩy mã nguồn (git push -u origin <branch>) và lấy dữ liệu mới (git fetch, git pull)
-
Thực hành: Mô phỏng xung đột giữa 2 lập trình viên và thực hành giải quyết xung đột thủ công
-
Thực hành: Đẩy dự án cục bộ lên GitHub/GitLab và thiết lập các nhánh theo dõi từ xa (Tracking Branches)
-
Quiz: Trắc nghiệm so sánh sự khác biệt bản chất giữa git fetch và git pull
-
Thảo luận: Giải quyết xung đột mã nguồn (Merge Conflicts) & Tương tác Remote
-
Tích hợp mã nguồn bằng git rebase: So sánh với Merge, lợi ích lịch sử thẳng (Linear History) và nguyên tắc an toàn
-
Tạm lưu trạng thái công việc đang dở dang bằng git stash và ứng dụng git pull --rebase
-
Thực hành: Thực thi Rebase nhánh tính năng lên đỉnh nhánh main và giải quyết xung đột theo từng commit
-
Thực hành: Lưu tạm, khôi phục và chuyển đổi bối cảnh làm việc khẩn cấp bằng git stash push/pop/apply
-
Thực hành: Chuẩn hóa lịch sử commit cá nhân mượt mà bằng Rebase trước khi chia sẻ lên kho chứa chung
-
Quiz: Trắc nghiệm chọn lựa chiến lược Rebase hay Merge cho từng mô hình dự án cụ thể
-
Thảo luận: Kỹ thuật tích hợp mã nguồn nâng cao (Rebase & Stash)
-
Case Study: Chiến lược quản trị nhánh và đồng bộ kho chứa từ xa trong dự án đa nhóm
Quy trình làm việc nhóm trên github và dự án mã nguồn mở (github workflows & collaboration)
3 bài học · 20 hoạt động-
Quy chuẩn hợp tác theo GitHub Flow (Topic Branch -> PR -> Code Review -> Merge)
-
Cấu trúc chuẩn của một Pull Request: Tiêu đề, mô tả thay đổi, gắn thẻ Issue và đính kèm hình ảnh minh họa
-
Thực hành: Khởi tạo Pull Request trên giao diện GitHub và thảo luận mã nguồn theo từng dòng code (Line-by-line comments)
-
Thực hành: Cập nhật thêm commit mới vào nhánh PR đang mở để điều chỉnh theo phản hồi của đồng nghiệp
-
Quiz: Trắc nghiệm các phương thức hợp nhất PR trên GitHub (Create a merge commit, Squash and merge, Rebase and merge)
-
Thảo luận: Quy trình GitHub Flow & Pull Request (PR)
-
Quản lý quyền thành viên trong GitHub Organization và phân quyền cho Collaborator
-
Quản lý tiến độ dự án bằng GitHub Issues, Labels, Milestones và Kanban Projects Board
-
Thực hành: Đóng vai Maintainer tiến hành Code Review, duyệt hoặc yêu cầu chỉnh sửa (Request Changes) đối với PR
-
Thực hành: Đồng bộ hóa kho chứa cá nhân (Fork) với kho chứa gốc (Upstream) qua git remote add upstream và git fetch
-
Thực hành: Mô phỏng bài tập nhóm 3 người: 1 Maintainer quản lý Repo/Issues, 2 Developer tạo Fork/PR và tiến hành review chéo lẫn nhau
-
Quiz: Trắc nghiệm quy trình xử lý xung đột PR trực tiếp trên giao diện web của GitHub
-
Thảo luận: Quản trị dự án & Quy trình Đánh giá mã nguồn (Code Review)
-
So sánh mô hình phát triển Centralized Workflow và Integration-Manager Workflow
-
Mô hình Dictator and Lieutenants dành cho các siêu dự án với hàng trăm nhà phát triển
-
Quy trình đóng góp qua Email/Patches (git format-patch, git am) trong các cộng đồng Linux/Open-source truyền thống
-
Thực hành: Tạo tệp patch bằng git format-patch và áp dụng patch vào nhánh làm việc
-
Quiz: Trắc nghiệm phân tích ưu/nhược điểm của từng mô hình phân tán trong môi trường doanh nghiệp
-
Thảo luận: Các mô hình làm việc phân tán nâng cao (Distributed Workflows)
-
Case Study: Áp dụng mô hình phát triển phân tán Fork and Pull Model trong các dự án mã nguồn mở và doanh nghiệp quy mô lớn
Git & Github nâng cao, tự động hóa ci/cd và devops (advanced git, github actions & automation)
3 bài học · 21 hoạt động-
Tinh chỉnh lịch sử commit chuyên sâu bằng Interactive Rebase (git rebase -i): squash, reword, drop, fixup
-
Trích xuất commit riêng lẻ với git cherry-pick và truy vết tác giả câu lệnh bằng git blame
-
Thực hành: Gộp nhiều commit nhỏ nháp thành commit hoàn chỉnh trước khi tạo Pull Request bằng git rebase -i
-
Thực hành: Tự động tìm kiếm commit gây lỗi lập trình bằng thuật toán nhị phân git bisect trên nhật ký lớn
-
Thực hành: Dọn dẹp một nhánh tính năng có 10 commit lộn xộn thành 2 commit chuẩn mực đạt điều kiện kiểm thử
-
Quiz: Trắc nghiệm các quy tắc an toàn khi biến đổi lịch sử mã nguồn (Rewriting History)
-
Thảo luận: Kỹ thuật thao tác lịch sử nâng cao & Debug mã nguồn
-
Khái niệm CI/CD và cấu trúc cú pháp tệp YAML trong GitHub Actions (.github/workflows/)
-
Các thành phần workflow: Trigger Events (push, pull_request, schedule), Jobs, Steps, Runners và Secrets Context
-
Thực hành: Khởi tạo Workflow tự động kiểm tra định dạng code (Linting) và chạy Unit Test mỗi khi có Pull Request
-
Thực hành: Cấu hình Build Matrix (strategy.matrix) để kiểm thử ứng dụng đồng thời trên nhiều phiên bản OS và môi trường
-
Thực hành: Tối ưu hóa tốc độ chạy CI/CD bằng bộ nhớ đệm phụ thuộc (actions/cache) và lưu trữ sản phẩm đóng gói (actions/upload-artifact)
-
Quiz: Trắc nghiệm cú pháp YAML và cơ chế bảo mật khóa Secret token (GITHUB_TOKEN)
-
Thảo luận: Tự động hóa quy trình với GitHub Actions CI/CD
-
Tự động hóa kiểm tra cục bộ và máy chủ bằng Git Hooks (Client-side: pre-commit, Server-side: pre-receive)
-
Quy định chính sách bảo vệ nhánh (Branch Protection Rules), bắt buộc duyệt PR và vượt qua bài test CI/CD trước khi hợp nhất
-
Thực hành: Viết kịch bản Hook pre-commit tự động kiểm tra lỗi khoảng trắng rác và định dạng tệp trước khi tạo commit
-
Thực hành: Quản lý thư viện dự án con với git submodule trong các kho chứa phức tạp
-
Thực hành: Kết nối Webhooks và GitHub API để tự động phát tin nhắn thông báo sự kiện về kênh làm việc nhóm
-
Quiz: Trắc nghiệm kiểm tra khả năng áp dụng các chính sách tuân thủ mã nguồn (Git-Enforced Policy) trong dự án lớn
-
Case Study: Thiết lập trọn gói một Repository chuẩn Doanh nghiệp bao gồm: Branch Protection, Git Hooks kiểm thử local, GitHub Actions CI/CD hoàn chỉnh và quy trình đóng góp PR có Code Review