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.
Mục lục bài viết(12)
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ệm | Là gì | Tương đương |
|---|---|---|
| Git | Phần mềm theo dõi lịch sử thay đổi của file | Tính năng "Version history" trong Google Docs |
| GitHub | Website lưu code trên cloud + cộng tác team | Google 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 revertquay 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 blamecho 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ệnh | Mục đích | Khi nào dùng |
|---|---|---|
git init | Khởi tạo Git cho folder | Lần đầu tạo project |
git add . | Đánh dấu file đã thay đổi để commit | Trướ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 GitHub | Backup + share với team |
git pull | Lấ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ăng | Mục đích | Tương đương Google Docs |
|---|---|---|
| Repository | Kho chứa code + lịch sử Git | File Doc trên Drive |
| Pull Request (PR) | Đề xuất gộp branch + review | Suggest edit + comment |
| Issues | Báo bug + đề xuất tính năng + thảo luận | Sticky note + comment thread |
| Actions | Chạy code tự động (test, build, deploy) khi push | Không tương đương — feature riêng |
| Wiki | Tài liệu cho repo | Có (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ới9h-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-passwordGitHub 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 pushPR 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í | GitHub | GitLab | Bitbucket | Gitea |
|---|---|---|---|---|
| Owner | Microsoft | GitLab Inc. | Atlassian | Open-source |
| Free tier | Generous (unlimited private repo) | Hạn chế hơn | Free cho team ≤5 | Self-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 Pipelines | Drone hoặc external |
| Self-host được | GitHub Enterprise (đắt) | GitLab Community (free) | Bitbucket Data Center | Có (mặc định) |
| Tích hợp với | Mọi nơi | Mọi nơi | Tốt nhất với Jira | Hạn chế |
| Thị phần 2026 | ~80% | ~12% | ~6% | ~2% |
| Phù hợp | Startup, open-source, dev solo | Doanh nghiệp lớn, có DevOps | Team đã dùng Atlassian | Tự 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:
| Branch | Mục đích |
|---|---|
main | Production — code đang live trên vietcodex.com + wiki.vietcodex.com |
feature/article-7-html-css-js | Branch viết bài wiki HTML/CSS/JS |
feature/cmd-k-search | Branch build tính năng search |
fix/code-block-readability | Branch 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ứng | Cách phòng tránh |
|---|---|---|
| Commit secret vào public repo | API key bị hacker dùng, hoá đơn cloud bất ngờ | Dùng .gitignore + tool gitleaks scan tự động |
Lost work do git reset --hard | Code 3 giờ làm bay mất | Backup lên GitHub thường xuyên + KHÔNG dùng --hard cho work uncommitted |
| Merge conflict không biết giải quyết | PR mãi không merge được | Học pattern resolve conflict cơ bản + dùng VS Code merge editor |
Force push lên main | Xoá lịch sử của team | KHÔNG force push lên main. Repo nên có "branch protection" bật trên GitHub |
Quên git pull trước khi code | Code dựa trên version cũ → conflict lớn | Pull 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 debug | Dù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
- Framework là gì? React, Vue, Next.js — dự án framework đều quản qua Git
- Frontend vs Backend khác nhau ở đâu — front + back thường trong 1 repo Git (monorepo) hoặc 2 repo riêng
- HTML, CSS, JavaScript — 3 ngôn ngữ tạo nên mọi website — code 3 ngôn ngữ này cần version control
- Web hoạt động thế nào — hành trình 200ms — code → Git → CI/CD → deploy (triển khai — đưa code lên server chạy) = pipeline (chuỗi xử lý tự động) chuẩn