Dùng AI

GitHub cho người học AI: bắt đầu từ con số 0

Người học AI dùng GitHub mỗi ngày: tải mã nguồn của mô hình, chạy dự án mẫu, đọc giấy phép, cộng tác với nhóm và đưa dự án của mình lên làm hồ sơ xin việc. Bài này vẽ lộ trình bốn chặng từ con số 0, giải thích những điều cần nắm ở mỗi chặng và dẫn tới bài chi tiết.

Ý chính
  • Git ghi lại lịch sử thay đổi của tệp trên máy bạn; GitHub lưu các dự án Git (kho, repository) trên mạng và thêm công cụ cộng tác. Hai thứ khác nhau nhưng đi cùng nhau.
  • Lộ trình bốn chặng: nắm nền tảng (Git, kho đầu tiên), dùng lại dự án của người khác (chạy, đọc README và giấy phép), làm việc nhóm (issue, pull request, Actions), thể hiện (portfolio, Hugging Face, đóng góp mã nguồn mở).
  • Ba luật an toàn ở mọi chặng: không đưa khóa API lên git, không đẩy tệp lớn quá giới hạn, và đọc giấy phép trước khi dùng lại code.

Bài này dựa trên tài liệu của GitHub và Hugging Face, đọc ngày 11/11/2026. Các con số (giới hạn kích thước tệp, số mô hình trên Hugging Face) là số tài liệu ghi vào ngày đó; giao diện và con số có thể đổi, nên khi làm hãy đối chiếu lại trang gốc.

Vì sao người học AI cần GitHub?

Nếu học AI, bạn sẽ gặp GitHub sớm hơn bạn nghĩ. Mã nguồn đi kèm phần lớn bài báo và thư viện AI mở được đặt trên GitHub. Hướng dẫn của các khóa học thường bắt đầu bằng "tải kho này về và chạy". Nhà tuyển dụng mở hồ sơ GitHub của bạn để xem bạn đã làm gì thật. Và các công cụ AI lập trình hiện nay làm việc trên nền Git: chúng đọc lịch sử thay đổi, tạo nhánh, đề xuất commit.

Có bốn việc bạn sẽ làm trên GitHub, tương ứng với bốn chặng của lộ trình:

  1. Lưu và quản lý code của mình, có lịch sử để quay lại khi làm hỏng.
  2. Dùng lại dự án của người khác: tải về, cài đặt, chạy thử, hiểu được phép dùng tới đâu.
  3. Làm việc nhóm: báo lỗi, đề xuất thay đổi, để máy tự chạy test.
  4. Thể hiện năng lực: hồ sơ dự án, mô hình và bản demo, đóng góp cho cộng đồng.

Bài này đi qua từng chặng, giải thích những gì cần nắm và dẫn tới bài chi tiết. Bạn không cần đọc hết một lúc: đọc chặng 1 rồi thực hành, khi gặp nhu cầu thì đọc tiếp.

GitHub cho người học AI: 4 chặng Từ commit đầu tiên tới portfolio và đóng góp 1. Nền tảngGit, repocommit, push 2. Dùng lạiChạy dự ánREADME, license 3. Làm nhómIssue, PRActions 4. Thể hiệnPortfolioHugging Face Giữ khóa API ngoài git ở mọi chặng
GitHub cho người học AI: 4 chặng 1. Nền tảngGit, repocommit, push 2. Dùng lạiChạy dự ánREADME, license 3. Làm nhómIssue, PRActions 4. Thể hiệnPortfolioHugging Face Giữ khóa API ngoài git ở mọi chặng
Hình 1. Bốn chặng học GitHub cho người học AI: nền tảng (Git, kho, commit, push), dùng lại dự án (chạy dự án, đọc README và giấy phép), làm việc nhóm (issue, pull request, Actions), thể hiện (portfolio, Hugging Face). Giữ khóa API ngoài git ở mọi chặng.

Git và GitHub khác nhau thế nào?

Tài liệu của GitHub phân biệt rõ hai thứ này:

  • Git là hệ thống quản lý phiên bản, theo dõi thay đổi của tệp. Nó cho bạn làm việc trên bản sao dự án của riêng mình và gộp thay đổi của bạn với người khác một cách an toàn. Git chạy trên máy bạn, không cần mạng.
  • GitHub là nền tảng hỗ trợ cả quá trình phát triển phần mềm. Nó lưu các dự án Git (gọi là kho, repository) trên mạng và thêm công cụ lập kế hoạch, cộng tác.

Cách hình dung đơn giản: Git là cuốn sổ ghi lại từng lần bạn sửa bài; GitHub là nơi bạn để cuốn sổ đó trên mạng cho cả nhóm cùng xem và góp ý. Bạn có thể dùng Git mà không cần GitHub, và cũng có các nền tảng khác tương tự GitHub. Bài Git và GitHub là gì giải thích kỹ hơn, kèm cách cài đặt.

Thuật ngữ tối thiểu

Thuật ngữ Nghĩa
Kho (repository, repo) Thư mục dự án được Git theo dõi, gồm cả lịch sử thay đổi
Commit Một lần lưu thay đổi kèm lời mô tả, như một "điểm lưu" để quay lại
Nhánh (branch) Một dòng phát triển riêng, để thử thay đổi mà không ảnh hưởng bản chính
Clone Tải một kho từ GitHub về máy, kèm toàn bộ lịch sử
Push / pull Đẩy commit từ máy lên GitHub / kéo commit mới từ GitHub về máy
Fork Tạo bản sao kho của người khác dưới tài khoản của bạn
Pull request Đề xuất gộp thay đổi của bạn vào một nhánh, để người khác xem và góp ý trước
Issue Phiếu báo lỗi hay đề xuất tính năng của một kho
README Tệp giới thiệu dự án, hiện ngay ở trang chính của kho
LICENSE Tệp giấy phép, cho biết người khác được dùng code tới đâu
.gitignore Danh sách tệp Git bỏ qua, không đưa vào kho

Chặng 1: nền tảng, kho đầu tiên

Mục tiêu của chặng này: tự tạo kho, commit và đẩy code lên GitHub mà không cần ai hướng dẫn bên cạnh. Một vòng làm việc cơ bản trong terminal trông như sau:

git init                      # biến thư mục hiện tại thành kho Git
git add .                     # chọn mọi thay đổi để lưu
git commit -m "Thêm bản đầu"  # lưu một commit kèm lời mô tả
git push                      # đẩy commit lên GitHub (sau khi đã nối kho với GitHub)

Bốn lệnh này là xương sống. Phần còn lại của chặng 1 là hiểu vì sao nên commit nhỏ, viết lời mô tả rõ ràng, và cách nối thư mục trên máy với một kho trên GitHub. Bài đưa code lên GitHub đi từng bước, từ tạo kho trên trang web tới lần push đầu tiên.

Một thói quen nên tập ngay từ đầu: tạo tệp .gitignore trước lần commit đầu tiên. Với dự án Python học AI, tối thiểu bỏ qua thư mục môi trường ảo (.venv/), thư mục bộ nhớ đệm (__pycache__/) và tệp chứa khóa (.env). Phần "Ba luật an toàn" bên dưới giải thích vì sao.

Chặng 2: dùng lại dự án của người khác

Đây là chặng người học AI dùng nhiều nhất. Bạn tìm được một kho có mô hình nhận diện ảnh hay một bản demo chatbot, và muốn chạy thử trên máy. Ba kỹ năng cần có:

Chạy được dự án. Phần lớn dự án AI viết bằng Python và cần cài đúng thư viện, đúng phiên bản. Cách an toàn là luôn tạo môi trường ảo riêng cho mỗi dự án, cài theo requirements.txt hoặc pyproject.toml, và đọc kỹ phần hướng dẫn cài đặt trong README. Bài chạy dự án AI từ GitHub đi qua các lỗi hay gặp: sai phiên bản Python, thiếu thư viện, thiếu GPU, thiếu tệp trọng số mô hình.

Đọc README và giấy phép. README cho biết dự án làm gì và chạy thế nào. Giấy phép cho biết bạn được làm gì với code. Theo tài liệu GitHub, một kho không có giấy phép thì luật bản quyền mặc định áp dụng: tác giả giữ mọi quyền, và không ai được sao chép, phân phối hay làm sản phẩm phái sinh từ code đó. Điều khoản dịch vụ của GitHub chỉ cho người khác quyền xem và fork kho công khai. Nói cách khác, "để công khai trên GitHub" không có nghĩa là "được dùng tự do". Bài đọc README và LICENSE so sánh các giấy phép phổ biến.

Tìm được kho tốt. Số sao không phải tất cả: một kho tốt để học có README rõ, có ví dụ chạy được, còn được cập nhật, và có người trả lời issue. Bài tìm repo AI hay chỉ cách dùng mục Trending, các danh sách "awesome" và cách đánh giá một kho; bài repo AI mã nguồn mở đáng học đưa danh sách cụ thể kèm năm và ngày xem số sao.

Nếu bạn là học sinh hay sinh viên, GitHub có chương trình GitHub Education với các ưu đãi cho người học; điều kiện và nội dung ưu đãi thay đổi theo thời gian, nên bài GitHub Copilot cho sinh viên ghi rõ nguồn và ngày đọc.

Chặng 3: làm việc nhóm

Khi làm đồ án nhóm hay tham gia một dự án lớn, bạn cần ba công cụ.

Issue để ghi lại lỗi và việc cần làm, có người nhận và có thảo luận. Thay vì nhắn "code lỗi rồi" trong nhóm chat, bạn mở một issue mô tả cách tái hiện lỗi; ai sửa thì nhận issue đó.

Pull request để đề xuất thay đổi. Bạn làm trên nhánh riêng, mở pull request, đồng đội xem từng dòng thay đổi, góp ý, rồi mới gộp vào nhánh chính. Đây cũng là cách bạn kiểm tra code do AI viết trước khi đưa vào dự án. Bài issue và pull request hướng dẫn quy trình này.

GitHub Actions để máy tự làm việc lặp lại: mỗi lần có pull request, tự chạy test, tự kiểm định dạng code, thậm chí nhờ AI nhận xét thay đổi. Bài GitHub Actions bắt đầu từ một quy trình chạy test đơn giản.

Với người dùng công cụ AI lập trình, chặng này đặc biệt quan trọng. Agent có thể sửa hàng chục tệp trong vài phút; nhánh riêng, pull request và test tự động là ba lớp giúp bạn kiểm soát những gì thật sự đi vào dự án. Xem thêm quy trình làm dự án với agent và kiểm chứng việc AI làm.

Chặng 4: thể hiện và đóng góp

Portfolio trên GitHub. Khi xin thực tập hay việc làm về AI, hồ sơ GitHub là bằng chứng bạn làm được việc. Ba dự án có README tốt, có hướng dẫn chạy, có kết quả đo được và có lịch sử commit đều đặn thường thuyết phục hơn hai mươi kho chép từ hướng dẫn. Bài portfolio AI trên GitHub chỉ cách chọn và trình bày dự án.

Hugging Face là nơi người làm AI chia sẻ mô hình, bộ dữ liệu và ứng dụng demo. Theo trang tài liệu Hugging Face Hub (đọc 11/11/2026), nền tảng có hơn 3 triệu mô hình, 1 triệu bộ dữ liệu và 2 triệu ứng dụng demo (Spaces), và các kho trên đó cũng dựa trên Git. Bạn có thể để code trên GitHub và đưa mô hình đã huấn luyện cùng bản demo lên Hugging Face. Bài Hugging Face là gì so sánh hai nền tảng.

GitHub Hugging Face Hub
Thường chứa Mã nguồn, tài liệu Mô hình, bộ dữ liệu, ứng dụng demo
Nền tảng lưu trữ Kho Git Kho Git, có cơ chế riêng cho tệp lớn
Dùng để Phát triển và cộng tác trên code Chia sẻ và dùng lại mô hình, dữ liệu

Đóng góp mã nguồn mở. Sửa một lỗi chính tả trong tài liệu, thêm một ví dụ, trả lời một issue: đó là những đóng góp nhỏ nhưng thật, và là cách tốt để học cách một dự án lớn vận hành. Bài đóng góp cho dự án AI mã nguồn mở chỉ cách chọn việc đầu tiên.

Ba luật an toàn ở mọi chặng

1. Không đưa khóa API, mật khẩu lên git. Một khóa đã nằm trong lịch sử commit thì xóa tệp đi vẫn còn trong lịch sử. Khóa nên để trong tệp .env (được .gitignore bỏ qua) hoặc biến môi trường. GitHub có lớp bảo vệ: theo tài liệu về push protection, bảo vệ ở cấp người dùng được bật sẵn trên GitHub.com và chặn bạn đẩy khóa bí mật lên kho công khai; khi phát hiện, lần push bị chặn và bạn nhận thông báo lý do. Bảo vệ ở cấp kho thì mặc định tắt, chủ kho phải bật. Đừng dựa hoàn toàn vào lớp này: nó nhận ra các mẫu khóa đã biết, không phải mọi bí mật. Bài giữ khóa API an toàn nói đầy đủ, kể cả cách xử lý khi lỡ đẩy khóa lên.

2. Không đẩy tệp lớn quá giới hạn. Tệp trọng số mô hình và bộ dữ liệu thường rất lớn. Theo tài liệu GitHub: Git cảnh báo khi tệp lớn hơn 50 MiB nhưng vẫn cho đẩy; GitHub chặn tệp lớn hơn 100 MiB; tải lên qua trình duyệt tối đa 25 MiB; kích thước kho nên dưới 1 GB và rất nên dưới 5 GB. Tệp trên 100 MiB cần Git LFS, hoặc tốt hơn là để mô hình và dữ liệu ở nơi khác (như Hugging Face) và ghi hướng dẫn tải trong README.

3. Đọc giấy phép trước khi dùng lại. Như ở chặng 2: không có giấy phép nghĩa là không được dùng lại. Với dự án của bạn, hãy chọn một giấy phép ngay từ đầu nếu muốn người khác dùng được.

Kiểm một thư mục dự án trước khi đưa lên GitHub

Đoạn Python dưới đây rà một thư mục dự án trước lần push đầu tiên: có đủ README, LICENSE, danh sách thư viện và .gitignore chưa; .gitignore đã bỏ qua .env, .venv/, __pycache__/ chưa; có tệp nào vượt ngưỡng 50 hay 100 MiB; và có chuỗi nào trông giống khóa bí mật. Các mẫu khóa chỉ là dạng hay gặp; công cụ không chứng minh được dự án sạch.

"""Rà một thư mục dự án trước khi đưa lên GitHub lần đầu.

Kiểm bốn nhóm điều hay sai ở người mới:
1. Tệp nên có: README, LICENSE, danh sách thư viện (requirements.txt hoặc pyproject.toml), .gitignore.
2. .gitignore có bỏ qua .env, .venv/ và __pycache__/ không.
3. Tệp lớn: GitHub cảnh báo tệp trên 50 MiB và chặn tệp trên 100 MiB (tài liệu GitHub, đọc 11/11/2026).
4. Chuỗi trông giống khóa bí mật. Các mẫu dưới đây chỉ là dạng hay gặp, không đủ để chắc chắn là sạch.
"""
import os
import re
import tempfile

MIB = 1024 * 1024
CANH_BAO_MIB, CHAN_MIB = 50, 100
BO_QUA = {".git", ".venv", "venv", "__pycache__", "node_modules"}
GITIGNORE_NEN_CO = [".env", ".venv/", "__pycache__/"]
MAU_BI_MAT = [
    (re.compile(r"sk-(?:ant-)?[A-Za-z0-9_-]{20,}"), "khóa API dạng sk-..."),
    (re.compile(r"ghp_[A-Za-z0-9]{36}"), "token GitHub dạng ghp_..."),
    (re.compile(r"hf_[A-Za-z0-9]{30,}"), "token Hugging Face dạng hf_..."),
    (re.compile(r"(?i)(api[_-]?key|secret|token|password)\s*=\s*['\"][^'\"]{12,}['\"]"), "gán thẳng khóa vào biến"),
]


def ra_soat(goc):
    loi, canh_bao = [], []
    ten = set(os.listdir(goc))
    if not ten & {"README.md", "README.rst", "README.txt"}:
        loi.append("thiếu README: người khác không biết dự án làm gì, chạy thế nào")
    if not ten & {"LICENSE", "LICENSE.md", "LICENSE.txt"}:
        canh_bao.append("thiếu LICENSE: không có giấy phép thì người khác không được phép dùng lại code")
    if not ten & {"requirements.txt", "pyproject.toml"}:
        canh_bao.append("thiếu requirements.txt hoặc pyproject.toml: người khác không biết cần cài thư viện gì")
    bo_qua = []
    if ".gitignore" in ten:
        with open(os.path.join(goc, ".gitignore"), encoding="utf-8") as f:
            bo_qua = [d.strip() for d in f if d.strip() and not d.startswith("#")]
        for mau in GITIGNORE_NEN_CO:
            if mau not in bo_qua and mau.rstrip("/") not in bo_qua:
                loi.append(f".gitignore chưa có {mau}")
    else:
        loi.append("thiếu .gitignore")
    if ".env" in ten and ".env" not in bo_qua:
        loi.append(".env sẽ bị đưa lên GitHub: thêm .env vào .gitignore")
    for thu_muc, con, tep_ds in os.walk(goc):
        con[:] = [c for c in con if c not in BO_QUA]
        for tep in sorted(tep_ds):
            p = os.path.join(thu_muc, tep)
            rel = os.path.relpath(p, goc).replace(os.sep, "/")
            kich_thuoc = os.path.getsize(p)
            if kich_thuoc > CHAN_MIB * MIB:
                loi.append(f"{rel}: {kich_thuoc // MIB} MiB, GitHub chặn tệp trên {CHAN_MIB} MiB (dùng Git LFS hoặc để ngoài kho)")
                continue
            if kich_thuoc > CANH_BAO_MIB * MIB:
                canh_bao.append(f"{rel}: {kich_thuoc // MIB} MiB, trên {CANH_BAO_MIB} MiB sẽ bị cảnh báo")
                continue
            if rel == ".env" and ".env" in bo_qua:
                continue  # .env đã được bỏ qua nên sẽ không lên GitHub
            try:
                with open(p, encoding="utf-8") as f:
                    for so, dong in enumerate(f, 1):
                        for mau, mo_ta in MAU_BI_MAT:
                            if mau.search(dong):
                                loi.append(f"{rel}:{so}: trông giống {mo_ta}")
            except UnicodeDecodeError:
                pass
    return loi, canh_bao


def tao_mau(goc):
    with open(os.path.join(goc, "README.md"), "w", encoding="utf-8") as f:
        f.write("# Phân loại cảm xúc bình luận\n")
    with open(os.path.join(goc, ".gitignore"), "w", encoding="utf-8") as f:
        f.write(".venv/\n__pycache__/\n")
    with open(os.path.join(goc, ".env"), "w", encoding="utf-8") as f:
        f.write("OPENAI_API_KEY=sk-" + "x" * 24 + "\n")
    with open(os.path.join(goc, "app.py"), "w", encoding="utf-8") as f:
        f.write("import os\n\nkhoa = os.environ['OPENAI_API_KEY']\n")
    os.makedirs(os.path.join(goc, "mo_hinh"))
    with open(os.path.join(goc, "mo_hinh", "trong_so.bin"), "wb") as f:
        f.truncate(120 * MIB)  # tệp 120 MiB, tạo nhanh, không ghi dữ liệu thật


def chay_thu():
    with tempfile.TemporaryDirectory() as goc:
        tao_mau(goc)
        loi, canh_bao = ra_soat(goc)
    print(f"{len(loi)} lỗi, {len(canh_bao)} cảnh báo")
    for x in loi:
        print("LỖI:", x)
    for x in canh_bao:
        print("CẢNH BÁO:", x)
    return loi, canh_bao


if __name__ == "__main__":
    chay_thu()

Với thư mục mẫu mà đoạn code tạo ra (có README, .gitignore thiếu .env, một tệp .env chứa khóa giả và một tệp trọng số 120 MiB), kết quả là:

4 lỗi, 2 cảnh báo
LỖI: .gitignore chưa có .env
LỖI: .env sẽ bị đưa lên GitHub: thêm .env vào .gitignore
LỖI: .env:1: trông giống khóa API dạng sk-...
LỖI: mo_hinh/trong_so.bin: 120 MiB, GitHub chặn tệp trên 100 MiB (dùng Git LFS hoặc để ngoài kho)
CẢNH BÁO: thiếu LICENSE: không có giấy phép thì người khác không được phép dùng lại code
CẢNH BÁO: thiếu requirements.txt hoặc pyproject.toml: người khác không biết cần cài thư viện gì

Để ý tệp app.py trong thư mục mẫu đọc khóa bằng os.environ thay vì viết thẳng khóa vào code, nên không bị báo. Đó là cách đúng.

Kế hoạch bốn tuần cho người mới

Tuần Làm gì Bài đọc
1 Cài Git, tạo tài khoản, đưa một bài tập Python lên GitHub, commit mỗi ngày Git và GitHub là gì, đưa code lên GitHub
2 Chọn một kho AI nhỏ, chạy được trên máy, đọc giấy phép của nó chạy dự án AI từ GitHub, đọc README và LICENSE
3 Làm việc với một bạn: mỗi người một nhánh, mở pull request, góp ý cho nhau, thêm một quy trình tự chạy test issue và pull request, GitHub Actions
4 Viết README đầy đủ cho dự án tốt nhất của bạn, ghim lên hồ sơ, thử đưa một mô hình nhỏ lên Hugging Face portfolio AI trên GitHub, Hugging Face là gì

Song song, đọc giữ khóa API an toàn ngay từ tuần 1, trước khi bạn viết dòng code đầu tiên gọi API của một mô hình AI.

Cẩn thận
  • Commit cả thư mục .venv/ hoặc __pycache__/: kho phình to và đầy tệp vô ích.
  • Viết thẳng khóa API vào code rồi push, tưởng xóa tệp sau là xong: khóa vẫn nằm trong lịch sử.
  • Đẩy tệp trọng số mô hình hàng trăm MiB lên GitHub: bị chặn trên 100 MiB.
  • Dùng code từ kho không có giấy phép cho sản phẩm hay đồ án nộp điểm mà không hỏi tác giả.
  • Gộp một lần cả trăm tệp do AI sửa vào nhánh chính mà không qua pull request và test.
  • Lời mô tả commit kiểu "sửa", "update": ba tháng sau chính bạn không biết commit đó làm gì.

Câu hỏi thường gặp

Người mới nên học Git bằng dòng lệnh hay bằng giao diện?

Nên biết các lệnh cơ bản (git add, git commit, git push, git pull) vì hướng dẫn của dự án AI thường viết bằng lệnh và công cụ AI lập trình cũng dùng lệnh. Giao diện đồ họa giúp xem lịch sử và thay đổi dễ hơn; dùng cả hai cũng được.

GitHub có miễn phí không?

Tạo tài khoản và kho công khai, kho riêng tư cơ bản đều dùng miễn phí được. Học sinh, sinh viên có thêm ưu đãi qua GitHub Education; xem điều kiện và ngày cập nhật trong bài về GitHub Copilot cho sinh viên.

Có cần GitHub nếu đã dùng Hugging Face?

Thường dùng cả hai: code và lịch sử phát triển trên GitHub, mô hình và bản demo trên Hugging Face. Hai nơi bổ sung cho nhau.

Tôi lỡ đẩy khóa API lên GitHub, phải làm gì?

Thu hồi khóa ngay ở trang của nhà cung cấp và tạo khóa mới, vì khóa cũ coi như đã lộ. Sau đó mới dọn lịch sử. Bài giữ khóa API an toàn hướng dẫn chi tiết.

Học GitHub mất bao lâu?

Đủ dùng cho việc học thì một hai tuần thực hành đều đặn. Làm việc nhóm trôi chảy cần thêm vài dự án thật. Quan trọng là dùng hằng ngày, không phải học thuộc lệnh.

Học tiếp

Nếu bạn muốn học AI bài bản, từ lập trình Python tới mô hình học máy, cùng giảng viên, tham khảo khóa học AI của Big-O Coding.

Muốn học bài bản cùng giảng viên?

Khóa AI – Introduction to Machine Learning: nền tảng Máy học từ thuật toán cơ bản đến Neural Networks và LLM, học bằng Python. Học thử buổi 1 miễn phí.

Xem Khóa AI

Nguồn tham khảo

Chia sẻ: Facebook LinkedIn
Nhắn Zalo tư vấnZalo Gọi 0937 401 483