Git và GitHub là gì? Google Docs cho code, có lịch sử mọi thay đổi

Git là 'lịch sử thay đổi' của code — quay về phiên bản trước nếu sai. GitHub là cloud lưu code + chỗ team cộng tác. Hiểu hai khái niệm này giúp bạn quản dự án dev, đọc CV developer và không mất code khi máy hỏng.

9 phút đọcCập nhật 2026-05-19
Đang tải audio...
Mục lục bài viết(12)
Logo Git — hệ thống quản lý phiên bản phân tán

Logo Git — phần mềm quản lý phiên bản (version control) phổ biến nhất thế giới, do Linus Torvalds (cha đẻ Linux) tạo năm 2005 trong vòng 10 ngày. Mọi dự án phần mềm chuyên nghiệp ngày nay đều dùng Git. Nguồn: Wikimedia Commons (CC BY 3.0).

Hiểu đơn giản nhất

Hai khái niệm khác nhau, hay đi cùng nhau:

Khái niệmLà gìTương đương
GitPhần mềm theo dõi lịch sử thay đổi của fileTính năng "Version history" trong Google Docs
GitHubWebsite lưu code trên cloud + cộng tác teamGoogle Drive cho code + Facebook cho developer

Bạn dùng Git trên máy mình để lưu mọi lần thay đổi code. Sau đó push (đẩy) lên GitHub để code có sẵn trên cloud + người khác xem được + bạn lấy được từ máy khác.

Nói cách khác: Git = phần mềm, GitHub = website chạy Git. Bạn có thể dùng Git mà không cần GitHub (lưu local). Nhưng ngược lại không có nghĩa — không có Git thì GitHub vô dụng.

Tại sao bạn cần biết

  • Quay về phiên bản cũ khi sai. Sửa code 3 ngày liền, hỏng → 1 lệnh git revert quay về trước đó. Không phải bắt đầu lại từ đầu.
  • Backup code tự động. Code trên máy + GitHub cloud + máy đồng đội = 3 copy. Máy bạn hỏng vẫn lấy lại được.
  • Cộng tác team không ghi đè nhau. 5 dev sửa cùng 1 file → Git merge thông minh, gộp các thay đổi không xung đột. Excel/Word chia sẻ thường ghi đè mất.
  • Quản lý ai làm gì, lúc nào. Mỗi commit có tên người + thời gian + diff (thay đổi cụ thể). Khi có bug, git blame cho biết ai viết dòng nào, lúc nào.
  • Đọc CV dev có ý nghĩa. "5 năm Git, contributor 50+ repos" có giá trị thật. Dev nào không biết Git = không phải dev professional.

Git làm gì cụ thể

Git theo dõi mọi thay đổi trong project — mỗi lần bạn commit, Git lưu snapshot toàn bộ file lúc đó. Sau này quay lại snapshot nào cũng được.

5 lệnh Git cơ bản (90% trường hợp dùng)

LệnhMục đíchKhi nào dùng
git initKhởi tạo Git cho folderLần đầu tạo project
git add .Đánh dấu file đã thay đổi để commitTrước khi save lịch sử
git commit -m "message"Save 1 lần thay đổi với mô tảMỗi khi xong 1 tính năng/fix bug
git pushĐẩy commit lên GitHubBackup + share với team
git pullLấy commit mới từ GitHub về máyĐầu ngày làm việc, sync với team

Khái niệm cốt lõi

1. Commit — một "lần save" có message:

$ git commit -m "Add login form with validation"
[main abc1234] Add login form with validation
 3 files changed, 47 insertions(+), 2 deletions(-)

Mỗi commit có ID (abc1234) duy nhất → tra cứu, quay về được sau này.

2. Branch — một "nhánh" lịch sử song song:

main:    A → B → C → D ──→ E (production)
                       ↘
feature/login:           F → G → H (đang code)

Bạn code tính năng mới ở branch feature/login riêng. Khi xong, merge vào main. Bạn dev khác có thể code branch feature/payment cùng lúc, không xung đột.

3. Merge — gộp branch lại:

main:    A → B → C → D → I (merged)
                       ↗
feature/login:    F → G → H

Git tự động gộp các thay đổi nếu không trùng dòng. Nếu trùng → conflict (xung đột khi merge — 2 người sửa cùng 1 dòng), bạn phải chọn giữ phần nào.

4. History — lịch sử mọi thay đổi:

$ git log --oneline
abc1234 Add login form with validation  (Nguyễn Văn A, 2 giờ trước)
def5678 Fix typo in README              (Trần Thị B, 1 ngày trước)
ghi9012 Initial commit                  (Nguyễn Văn A, 3 ngày trước)

Đọc lịch sử biết: ai đã làm gì, khi nào, lý do (qua message).

GitHub là gì

GitHub (2008, Microsoft mua 2018 giá $7.5 tỷ USD) là website lưu Git repository (kho chứa code) trên cloud + 5 tính năng cộng tác:

Tính năngMục đíchTương đương Google Docs
RepositoryKho chứa code + lịch sử GitFile Doc trên Drive
Pull Request (PR)Đề xuất gộp branch + reviewSuggest edit + comment
IssuesBáo bug + đề xuất tính năng + thảo luậnSticky note + comment thread
ActionsChạy code tự động (test, build, deploy) khi pushKhông tương đương — feature riêng
WikiTài liệu cho repoCó (nhưng ít dùng)

Pattern điển hình: code → commit → push → GitHub auto-chạy test → tạo PR → teammate review → có sửa → merge → tự động deploy.

Workflow team dev 1 ngày điển hình

Bạn là dev backend trong team 5 người, hôm nay sẽ thêm tính năng "Quên mật khẩu":

Sáng 9h:

git checkout main           # Chuyển sang branch main
git pull                    # Lấy code mới nhất từ team
git checkout -b feature/forgot-password   # Tạo branch mới

9h-12h: Code tính năng. Save 2-3 commit nhỏ:

git add .
git commit -m "Add forgot password form UI"
 
# Code tiếp...
git add .
git commit -m "Add API endpoint POST /api/forgot-password"
 
# Code tiếp...
git add .
git commit -m "Add email sending with reset link"

13h-15h: Code xong, test local OK. Push lên GitHub:

git push -u origin feature/forgot-password

GitHub URL hiển thị: "https://github.com/vietcodex/app/pull/new/feature/forgot-password" → bấm → tạo PR.

15h-16h: Tech lead review PR — comment 3 điểm cần sửa. Bạn sửa:

git add .
git commit -m "Fix typo + add rate limit"
git push

PR tự update với commit mới. Tech lead review lại → approve.

16h-17h: Bấm "Merge pull request" trên GitHub. GitHub Actions tự deploy lên staging. Team test trên staging OK → merge vào main → deploy production.

Toàn bộ một ngày: 6 commit, 1 PR, 0 conflict với 4 dev khác cũng code trong cùng repo.

So sánh GitHub vs GitLab vs Bitbucket vs Gitea

Tiêu chíGitHubGitLabBitbucketGitea
OwnerMicrosoftGitLab Inc.AtlassianOpen-source
Free tierGenerous (unlimited private repo)Hạn chế hơnFree cho team ≤5Self-host, không phí
CI/CD (Continuous Integration / Continuous Deployment — tích hợp + triển khai liên tục)GitHub Actions (mới nhưng mạnh)GitLab CI (chín muồi nhất)Bitbucket PipelinesDrone hoặc external
Self-host đượcGitHub Enterprise (đắt)GitLab Community (free)Bitbucket Data CenterCó (mặc định)
Tích hợp vớiMọi nơiMọi nơiTốt nhất với JiraHạn chế
Thị phần 2026~80%~12%~6%~2%
Phù hợpStartup, open-source, dev soloDoanh nghiệp lớn, có DevOpsTeam đã dùng AtlassianTự host vì lý do bảo mật

Ví dụ thực tế: dự án vietcodex.com workflow

VietCodex dùng GitHub cho cả website chính (vietcodex.com) lẫn wiki (wiki.vietcodex.com) — cùng 1 repo:

BranchMục đích
mainProduction — code đang live trên vietcodex.com + wiki.vietcodex.com
feature/article-7-html-css-jsBranch viết bài wiki HTML/CSS/JS
feature/cmd-k-searchBranch build tính năng search
fix/code-block-readabilityBranch fix code block dark theme

Mỗi tính năng + fix là 1 branch riêng → 1 PR → review → merge → deploy.

Số liệu cụ thể repo VietCodex (đến tháng 5/2026):

  • 312 commit trong 6 tháng
  • 48 pull request (24 feature, 18 fix, 6 chore)
  • 3 contributor active
  • 89% PR có ≥1 review trước merge
  • Zero data loss dù chuyển máy 3 lần

Workflow Git này = lý do dự án vẫn maintain được sau 6 tháng. Không có Git thì 312 commit = 312 lần sửa file lộn xộn, không có cách nào quay về phiên bản trước.

Cái gì có thể sai

Vấn đềTriệu chứngCách phòng tránh
Commit secret vào public repoAPI key bị hacker dùng, hoá đơn cloud bất ngờDùng .gitignore + tool gitleaks scan tự động
Lost work do git reset --hardCode 3 giờ làm bay mấtBackup lên GitHub thường xuyên + KHÔNG dùng --hard cho work uncommitted
Merge conflict không biết giải quyếtPR mãi không merge đượcHọc pattern resolve conflict cơ bản + dùng VS Code merge editor
Force push lên mainXoá lịch sử của teamKHÔNG force push lên main. Repo nên có "branch protection" bật trên GitHub
Quên git pull trước khi codeCode dựa trên version cũ → conflict lớnPull trước khi bắt đầu mỗi ngày làm việc
Commit message vô nghĩa ("update", "fix")Lịch sử khó đọc khi cần debugDùng convention: feat:, fix:, chore: + mô tả 1 dòng

Tóm tắt 1 dòng

Git = lịch sử thay đổi code (Google Docs version history). GitHub = cloud lưu Git + cộng tác (Google Drive + Facebook cho dev). Mọi dự án dev chuyên nghiệp đều dùng. Marketer/PM cần biết khái niệm (commit, branch, PR) — không cần command line. GitHub free đủ cho 90% startup VN.

Đọc tiếp

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

Tôi không code, có cần biết Git không?
Biết khái niệm cơ bản (commit, branch, merge, PR) đủ cho non-tech làm việc với dev. Marketer/PM cần đọc được GitHub để: xem dự án đang ở đâu, ai làm gì, ai gây lỗi gì, ETA còn bao lâu. Không cần biết command line — GitHub web UI đủ 90% trường hợp. Học 1-2 buổi YouTube là dùng được.
Git và GitHub khác nhau ở đâu?
Git = phần mềm chạy trên máy bạn, quản lịch sử code (Linus Torvalds tạo 2005). GitHub = website lưu Git repository trên cloud + thêm tính năng cộng tác (Microsoft mua 2018, $7.5 tỷ USD). Bạn dùng Git mà không cần GitHub (lưu local), hoặc dùng GitHub thay thế bằng GitLab/Bitbucket/Gitea. Git là protocol, GitHub là service cloud trên protocol đó.
GitHub có miễn phí không? Bao giờ phải trả tiền?
Miễn phí cho unlimited public + private repo, unlimited collaborator, 2.000 phút CI/CD/tháng. Trả tiền khi: team > 5 người (Team $4/user/tháng), cần SSO + audit log (Enterprise $21/user), cần GitHub Copilot ($10/user). 90% startup VN dùng GitHub free, đủ cho dự án < 10 người.
Tôi sợ chạy lệnh Git sai sẽ mất code, làm sao?
Hai cách an toàn: (1) Dùng GUI thay terminal — GitHub Desktop, GitKraken, Sourcetree có click chuột thay vì gõ; (2) Đẩy code lên GitHub thường xuyên (mỗi vài giờ) — push xong code lưu trên cloud, máy hỏng cũng không sao. Lệnh nguy hiểm cần biết để TRÁNH: `git reset --hard`, `git push --force`, `rm -rf .git`. Còn lại đa số lệnh đều có thể undo.
Repository công khai (public) vs riêng (private) — chọn cái nào?
Private cho code business — source code SaaS, web bán hàng, app công ty. Public cho dự án open-source bạn muốn chia sẻ + portfolio cá nhân dev (CV nhiều dev = vài public repo demo skill). KHÔNG bao giờ commit secret (.env, API key, password) lên public repo — hacker quét GitHub tìm secret rò rỉ trong vòng giờ.
Branch là gì? Tại sao team dùng 'main', 'develop', 'feature/xxx'?
Branch = một 'nhánh' lịch sử riêng. Bạn tạo branch `feature/login` để code tính năng login mà không ảnh hưởng `main` (production). Khi xong, gộp (merge) vào `main`. Pattern phổ biến: `main` (luôn deploy được) + `develop` (test trước khi merge main) + `feature/xxx` (mỗi tính năng 1 branch). Dự án nhỏ dùng GitHub Flow: `main` + `feature/xxx`, không có `develop`.
Pull Request là gì? Khác commit thế nào?
Commit = save 1 lần thay đổi vào lịch sử local. Pull Request (PR) = đề xuất gộp commit từ branch của bạn vào branch chính, người khác review trước khi merge. Workflow: bạn code → commit → push lên GitHub → tạo PR → teammate review → có sửa thêm → merge. PR là điểm gate-keeping chất lượng code và là nơi bàn luận, comment chi tiết từng dòng.
GitLab, Bitbucket, Gitea — khác GitHub thế nào?
Cùng protocol Git, khác ecosystem: GitLab có CI/CD mạnh hơn GitHub Actions (cho doanh nghiệp), tự host được. Bitbucket (Atlassian) tích hợp Jira tốt — team đã dùng Jira hay chọn. Gitea (mã nguồn mở) cho team muốn tự host hoàn toàn. Thị phần 2026: GitHub ~80%, GitLab ~12%, Bitbucket ~6%, còn lại 2%. GitHub là default 99% startup.