Vivavoy Learning

Git - Giới thiệu Git và GitHub

Mục tiêu bài giảng

Chào mừng các bạn đến với Vivavoy Learning! Trong bài giảng này, chúng ta sẽ:

  • Khám phá khái niệm cơ bản về Git và GitHub.
  • Học cách sử dụng ChatGPT để tra cứu thông tin về Git và GitHub.
  • Hiểu rõ cách Git hoạt động, cách tạo nhánh (branching) và kết hợp (merge) mã nguồn.
  • Tìm hiểu về lợi ích khi làm việc nhóm với Git và GitHub.
  • Chuẩn bị tư duy để đưa dự án trang web của bạn lên môi trường Online.

Sử dụng ChatGPT để tìm hiểu Git và GitHub

Thay vì phải tìm hiểu qua nhiều nguồn tài liệu rời rạc, chúng ta có thể tận dụng ChatGPT để tra cứu thông tin nhanh chóng, chính xác và dễ hiểu. Các bước thực hiện như sau:

  1. Truy cập ChatGPT:
    • Mở trình duyệt và vào địa chỉ chat.openai.com.
    • Đăng nhập (nếu chưa có tài khoản, các bạn có thể tạo mới hoặc tham khảo hướng dẫn đăng ký miễn phí trên Discord “discord.tuhoc.cc” để lấy tài khoản đã được cấp sẵn).
  2. Đặt câu hỏi về Git và GitHub:
    • Gõ ví dụ: "Giới thiệu tổng quan về Git và GitHub" rồi nhấn Enter.
    • Chờ khoảng 20–30 giây để ChatGPT trả lời đầy đủ.
    • Lưu ý rằng mỗi lần hỏi, ChatGPT có thể diễn đạt hơi khác nhau, nhưng nội dung cốt lõi về Git và GitHub hầu như không thay đổi.
  3. Đọc và ghi chú kết quả:
    • Đọc kỹ phần trả lời để nắm được khái niệm cơ bản và cách sử dụng.
    • Ghi lại từ khóa quan trọng như “điều khiển phiên bản phân tán”, “kho chứa (repository)”, “clone”, “commit”, “branch”...
    • Sử dụng phần thông tin đó làm nền tảng cho việc học sâu hơn về Git và GitHub ở các mục tiếp theo.

Git là gì?

Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System - DVCS) được tạo ra vào năm 2005. Thay vì một máy chủ trung tâm, Git cho phép mỗi lập trình viên giữ một bản sao đầy đủ của toàn bộ lịch sử dự án trên máy tính cá nhân. Các đặc điểm chính:

  • Phiên bản phân tán: Mỗi lúc bạn “clone” (sao chép) một kho lưu trữ (repository), bạn có được toàn bộ lịch sử commit trên máy mình.
  • Nhanh và hiệu quả: Mọi thao tác như commit, branch, merge đều được thực hiện cục bộ, rất nhanh.
  • Theo dõi lịch sử thay đổi: Mỗi lần bạn “commit” (ghi lại thay đổi), Git lưu trữ một “bản chụp” (snapshot) của toàn bộ cây thư mục, cho phép bạn dễ dàng xem lại, khôi phục hoặc so sánh giữa các phiên bản.
  • Hỗ trợ làm việc nhóm: Nhiều lập trình viên có thể làm việc song song, tạo nhánh (branch) riêng để phát triển tính năng mới, sau đó gộp (merge) về nhánh chính khi hoàn thiện.

Cấu trúc và cách hoạt động cơ bản của Git

Dưới đây là luồng làm việc cơ bản khi sử dụng Git:

  1. Init hoặc Clone một repository
    • git init: Tạo một kho Git mới tại thư mục hiện tại.
    • git clone <URL>: Sao chép một kho Git từ GitHub, GitLab hoặc bất kỳ máy chủ Git nào về máy bạn.
  2. Sửa đổi và commit
    • Chỉnh sửa file, tạo file mới hoặc xóa file.
    • git add <tên-file>: Đánh dấu file đã sửa đổi để đưa vào stage.
    • git commit -m "Thông điệp": Ghi lại thay đổi vào lịch sử với một thông điệp mô tả.
    • Git sẽ tự động lưu trữ toàn bộ thư mục (snapshot) vào commit đó.
  3. Đẩy (push) và kéo (pull) thay đổi
    • git push: Đẩy các commit từ máy cục bộ lên máy chủ từ xa (remote).
    • git pull: Kéo các commit mới nhất từ remote về máy cục bộ, đồng thời thực hiện merge nếu cần.
  4. Kiểm tra lịch sử và trạng thái
    • git status: Xem những file đã thay đổi, file đang ở stage hay chưa staged.
    • git log: Xem lịch sử các commit, kèm ID, tác giả và thông điệp.
  5. Quản lý nhánh (branch)
    • git branch <tên-nhánh>: Tạo một nhánh mới dựa trên nhánh hiện tại.
    • git checkout <tên-nhánh>: Chuyển sang làm việc trên nhánh đó.
    • git merge <tên-nhánh>: Kết hợp thay đổi từ nhánh đó vào nhánh hiện tại.

Ví dụ minh họa quy trình làm việc nhóm:

  • Nhóm có ba file: index.html, contact.htmlmyskill.html.
  • Chúng ta tạo ba nhánh riêng biệt: nhanh-index, nhanh-contact, nhanh-myskill.
  • Mỗi thành viên làm việc trên nhánh của mình, sửa xong thì commit và push lên remote.
  • Trưởng nhóm hoặc quản lý dự án có thể tạo một nhánh chính (ví dụ: main), rồi lần lượt merge các nhánh chức năng vào để ra sản phẩm hoàn chỉnh.

Branching (Nhánh) trong Git

Nhánh (branch) là một trong những tính năng mạnh mẽ nhất của Git. Mỗi nhánh cho phép bạn phát triển một tính năng mới hoặc sửa lỗi độc lập mà không ảnh hưởng đến nhánh chính (thường là main hoặc master).

Các thao tác chính liên quan đến nhánh:

  • git branch <tên-nhánh> – Tạo nhánh mới.
  • git checkout <tên-nhánh> – Chuyển sang nhánh đó.
  • git checkout -b <tên-nhánh> – Tạo nhánh mới rồi chuyển ngay sang nhánh đó.
  • git merge <tên-nhánh> – Kết hợp nhánh đó vào nhánh hiện tại.

Khi làm việc nhóm, mỗi thành viên nên:

  1. Tạo nhánh riêng cho tính năng (feature branch).
  2. Thường xuyên pull từ nhánh chính để đảm bảo mã nguồn không xung đột quá lâu.
  3. Cải tiến, test kỹ càng trên nhánh cá nhân trước khi merge vào nhánh chính.
  4. Sử dụng Pull Request (PR) để review code trước khi hợp nhất.

GitHub là gì?

GitHub là một dịch vụ lưu trữ mã nguồn trực tuyến dựa trên Git, cung cấp giao diện Web giúp chúng ta dễ dàng tương tác với repository:

  • Cho phép tạo repository ở chế độ công khai (public) hoặc riêng tư (private).
  • Hỗ trợ giao diện web để xem lịch sử commit, pull request, issue, cũng như điều phối làm việc nhóm.
  • Có các tính năng cộng tác như review code, comment, action tự động (CI/CD), GitHub Pages để deploy website tĩnh, v.v.

Khi bạn dùng GitHub để lưu trữ mã nguồn:

  1. Sau khi đã có repository cục bộ, bạn tạo một repository mới trên GitHub.
  2. Chạy lệnh:
    git remote add origin <URL-repository-GitHub>
    git push -u origin main
    
    để đẩy toàn bộ mã nguồn lên máy chủ GitHub.
  3. Từ lúc này, bạn và các cộng sự có thể clone, pull hoặc push từ GitHub để cùng cập nhật và phát triển.

Các lợi ích chính khi sử dụng Git và GitHub

Khi dùng Git và GitHub, nhóm phát triển sẽ nhận được nhiều lợi ích to lớn:

  • Lưu trữ, theo dõi lịch sử thay đổi: Mỗi lần commit là một “bản chụp” của toàn bộ mã nguồn. Bạn có thể xem được ai sửa gì, khi nào và vì sao.
  • Hỗ trợ làm việc nhóm: Mọi người có thể làm việc song song trên các nhánh riêng, sau đó hợp nhất lại mà không lo xung đột quá lớn.
  • Khôi phục nhanh chóng: Nếu commit gần nhất gây lỗi, bạn có thể “roll back” (quay về) commit trước đó chỉ với một lệnh đơn giản.
  • Đóng góp mã nguồn mở (Open Source): Nếu để chế độ public, cộng đồng quốc tế có thể đóng góp, báo lỗi hoặc gửi pull request cho dự án của bạn.
  • Quản lý issue và pull request: GitHub cung cấp công cụ quản lý issue (bug, task) và pull request để review, thảo luận và duyệt code một cách chuyên nghiệp.
  • Tích hợp CI/CD: Bạn có thể tận dụng GitHub Actions để tự động build, test và deploy dự án khi có commit mới.
  • Triển khai website tĩnh: GitHub Pages cho phép bạn deploy miễn phí các trang HTML/CSS/JavaScript tĩnh chỉ với vài bước cấu hình.

Bước tiếp theo: Triển khai trang web lên Online

Trong video tiếp theo của Vivavoy Learning, chúng ta sẽ tìm hiểu cách đưa trang web của bạn lên online để bạn bè, khách hàng và người thân có thể truy cập. Một số nền tảng phổ biến:

  • GitHub Pages: Triển khai website tĩnh (HTML/CSS/JS) miễn phí bằng chính repository trên GitHub.
  • Netlify / Vercel: Hỗ trợ deploy ứng dụng tĩnh hoặc framework (React, Next.js, Nuxt.js…) dễ dàng, kèm CDN miễn phí.
  • Heroku / Railway / Render: Triển khai ứng dụng động (Node.js, Python, Ruby…) mà không cần lo lắng về server.

Hãy chuẩn bị sẵn mã nguồn và tài khoản GitHub để ở bài học sau, chúng ta sẽ từng bước đẩy mã lên GitHub và cấu hình để website hiển thị trực tiếp trên Internet.